如何将image 中的图像保存 到ini 文件中,且能读取出来?
如何将image 中的图像保存 到ini 文件中,且能读取出来?
[解决办法]
保存: Image1.Picture.SaveToFile('D:\TEST.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;
[解决办法]
试验了一下,
procedure TForm1.Button1Click(Sender: TObject);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;
[解决办法]
用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;