用NativeXML将图片序列化为XML! 读取时再反序列化! 具体例子:var ADoc: TNativeXml; AWriter: TsdXmlObjectWriter; begin // Create XML document with root named "Root" ADoc := TNativeXml.CreateName('Root'); try // We set the XML document to UTF8 so widestrings are preserved ADoc.Utf8Encoded := True; ADoc.EncodingString := 'UTF-8'; // Create Object writer AWriter := TsdXmlObjectWriter.Create; try // Write the image object as child of the XML document's root node AWriter.WriteComponent(ADoc.Root, Image1, Self);//Image1为显示图片的控件名称 finally AWriter.Free; end; // Display resulting XML in memo ADoc.XmlFormat := xfReadable; mmXml.Clear; mmXml.Lines.Text := ADoc.WriteToString; finally ADoc.Free; end; end;
或者只是保存后的文件扩展名为ini? 如果直接扩展名,保存后改下就行
RenameFile('D:\TEST.INI','D:\TEST.BMP');
Image1.Picture.LoadFromFile('D:\TEST.BMP');
其实也很简单,根本不管你是不是ini文件//保存
procedure TForm1.Button1Click(Sender: TObject);
var
bit:TBitmap;
begin
bit:=TBitmap.Create;
bit.LoadFromFile('乌龙哈里.bmp');
bit.SaveToFile('photo.ini');
bit.Free;
end;
//读取
procedure TForm1.Button2Click(Sender: TObject);
var
bit:TBitmap;
begin
bit:=TBitmap.Create;
bit.LoadFromFile('photo.ini');
Canvas.Brush.Bitmap:=bit;
Canvas.Rectangle(0,0,bit.Width,bit.Height);
bit.Free;
end;
var
myIni:TIniFile;
myStream:TMemoryStream;
begin
myIni:=TIniFile.Create('.\photo.ini');
myStream:=TMemoryStream.Create;
myStream.LoadFromFile('乌龙哈里.bmp');
myIni.WriteBinaryStream('myphoto','20081016',myStream);
myStream.Free;
myIni.Free;
end;procedure TForm1.Button2Click(Sender: TObject);
var
myIni:TIniFile;
myStream:TMemoryStream;
bit:TBitmap;
begin
myIni:=TIniFile.Create('.\photo.ini');
myStream:=TMemoryStream.Create;
myIni.ReadBinaryStream('myphoto','20081016',myStream);
bit:=TBitmap.Create;
bit.LoadFromStream(myStream);
Canvas.Brush.Bitmap:=bit;
Canvas.Rectangle(0,0,bit.Width,bit.Height);
myStream.Free;
myIni.Free;
bit.Free;
end;
这样读出来的图片上半截是黑的,可能是很多非字符串的数据丢失了,不知道如何解决
2.记路径读你保存的.
3.图片大小不大的情况下. 把图片转换成字节流进,存进INI 需要的时候读取出来.(这方法不建议使用)
读取时再反序列化!
具体例子:var
ADoc: TNativeXml;
AWriter: TsdXmlObjectWriter;
begin
// Create XML document with root named "Root"
ADoc := TNativeXml.CreateName('Root');
try
// We set the XML document to UTF8 so widestrings are preserved
ADoc.Utf8Encoded := True;
ADoc.EncodingString := 'UTF-8';
// Create Object writer
AWriter := TsdXmlObjectWriter.Create;
try
// Write the image object as child of the XML document's root node
AWriter.WriteComponent(ADoc.Root, Image1, Self);//Image1为显示图片的控件名称
finally
AWriter.Free;
end;
// Display resulting XML in memo
ADoc.XmlFormat := xfReadable;
mmXml.Clear;
mmXml.Lines.Text := ADoc.WriteToString;
finally
ADoc.Free;
end;
end;