如何将image 中的图像保存 到ini 文件中,且能读取出来?

解决方案 »

  1.   

    为什么要Ini文件?  保存成文本? 
    或者只是保存后的文件扩展名为ini? 如果直接扩展名,保存后改下就行
      

  2.   

    保存:  Image1.Picture.SaveToFile('D:\TEST.INI');打开:
       RenameFile('D:\TEST.INI','D:\TEST.BMP');
      Image1.Picture.LoadFromFile('D:\TEST.BMP');
      

  3.   

    TIniFile 类,不是有WriteBinaryStream吗
      

  4.   

    那么奇怪的要求,满足你(简直有点...)
    其实也很简单,根本不管你是不是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;
      

  5.   

    试验了一下,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;
    这样读出来的图片上半截是黑的,可能是很多非字符串的数据丢失了,不知道如何解决
      

  6.   

    其实把路径存进去就很容易实现,需要用时候提路径出来load就是
      

  7.   

    1.写XML方式
    2.记路径读你保存的.
    3.图片大小不大的情况下. 把图片转换成字节流进,存进INI 需要的时候读取出来.(这方法不建议使用)
      

  8.   

    用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;