通过TMemoryStream或TFileStream的话该怎么实现?希望举例说明~~
or 用别的方法实现将图片保存至数据库,最好有例子~~
or 将图片复制到指定的文件夹下,并将其地址保存至数据库,希望能附上代码~~
or ...不管哪种方法,只要能实现就成,希望大家帮忙,感激不尽!!!

解决方案 »

  1.   

    uses jpeg;Tjpegimage
    保存Image1中的图象至数据库 :
    var 
    Ms:TmemoryStream;
    jpg:Tjpegimage;
    begin
    ms:=TmemoryStream.Create;
    Jpg.Assign(Image1.Picture.Graphic);
    Jpg.SaveToStream(Ms) ;
    Ms.Position :=0;
    ADOquery1.append;
    TBlobField(ADOquery1.FieldByName('img')).LoadFromStream(Ms);
    ADOquery1.Post;
    Ms.Free ;
    jpg.free;
    end;
      

  2.   

    Ms.Position :=0;
    和TBlobField(ADOquery1.FieldByName('img')).LoadFromStream(Ms);
    的用处分别是什么?第一次接触TMemoryStream,不好意思~
      

  3.   

    为了抢沙发,代码没测试,下面的我在本机做了测试通过,unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, jpeg,ADODB, ExtCtrls, StdCtrls, Buttons;type
      TForm1 = class(TForm)
        btn1: TButton;
        Image1: TImage;
        ADOConnection1: TADOConnection;
        ADOQuery1: TADOQuery;
        Image2: TImage;
        btn2: TBitBtn;
        procedure btn1Click(Sender: TObject);
        procedure btn2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.btn1Click(Sender: TObject);
    var 
    mStream:TMemoryStream; 
    JpgFile:TjpegImage;
    begin
    with ADOQuery1 do
      begin
        Close;
        sql.Clear;
        SQL.Add('select * from t1 where spmc=''1008''');
        Open;
      end;  if not ADOQuery1.FieldByName('img').IsNull then begin ;
        mStream:=TMemoryStream.Create ;
        JpgFile:=TjpegImage.Create ;
        TBlobField(ADOQuery1.FieldByName('img')).SaveToStream(mStream);//顯示的轉換為BlobFiled並保存至內存流
        mStream.Position :=0;
        jpgfile.LoadFromStream(MStream);
        image1.Picture.Assign(JpgFile);
      end else begin
        image1.Picture :=nil;
      end;
    end;procedure TForm1.btn2Click(Sender: TObject);
    var
    testStream:TMemoryStream;
    begin
      Image2.Picture.LoadFromFile('C:\Documents and Settings\All Users.WINDOWS\Documents\My Pictures\示例图片\Water lilies.jpg');
      try
        testStream := TMemoryStream.Create;//創建內存流
        Image2.Picture.Graphic.SaveToStream(testStream);//將圖片保存至內存流中
        with ADOQuery1 do
          begin
            Close;
            sql.Clear;
            sql.Add('Insert into t1 (spmc,img) values (:mc,:photo)');//進行插入操作
            Parameters.ParamByName('mc').Value := '1008';
            Parameters.ParamByName('photo').LoadFromStream(testStream,ftBlob);//讀取保存的內存圖
            ExecSQL;
          end;
      finally
        testStream.Free;//釋放內存流
      end;end;
    end.
      

  4.   

    btn2Click实现把IMAGE2中的图片用内存流方式写进数据表t1中
    btn1click实现把数据表t1中图片按符合查询条件语句读取到IMAGE1中
      

  5.   

    1.uses Jpeg;2.代码:
    图片保存到数据库: {----------将图片保存到数据库中去--------------------}
     if OpenDialog1.Execute then  begin
     TBlobField(ADOQuery1.fieldbyname('xpimg')).loadfromfile(OpenDialog1.FileName);
      messagebox(0,'文件裁入完毕','提示',MB_ICONINFORMATION);
     end;
    显示图片:procedure TForm1.Button4Click(Sender: TObject);
    var
    pic:tmemorystream;
    jpg:TJpegImage;
    begin
     {------------将图片显示出来--------------------}
          pic:=tmemorystream.Create;
          jpg:=TJpegImage.Create;
          try
              with   ADOQuery1   do   
              begin
              if not ADOQuery1.fieldbyname('xpimg').IsNull then begin
              TBlobField(FieldByName('xpimg')).SaveToStream(pic);
              pic.Position:=0;
              jpg.LoadFromStream(pic);
              Image1.Picture.Bitmap.Assign(jpg);
              end;
              end;      finally
              pic.Free;
              jpg.Free;
          end;
    end;
    图片另存为:{--------------将数据库中的图片另存为---------------------}
    if SaveDialog1.Execute then begin
    TBlobField(ADOQuery1.fieldbyname('xpimg')).savetofile(SaveDialog1.FileName);
    messagebox(0,'文件导出完毕','提示',MB_ICONINFORMATION);
    end;
      

  6.   

    内存流方式
    保存图片: 
        s:='insert into aaa(pic) values(:pic)'; 
        with inst_qry do begin 
          close; 
          sql.Clear; 
          sql.Add(s); 
          if pic_img.Picture.Graphic <>nil then 
          begin 
            MS_JpegStream:=TMemoryStream.Create; 
            try 
              pic_img.Picture.Graphic.SaveToStream(ms_jpegstream); 
              Parameters.ParamByName('pic').LoadFromStream(MS_JpegStream,ftblob); 
            finally 
              MS_JpegStream.Free; 
            end 
          end 
          else Parameters.ParamByName('pic').Value:='0xffff'; 
          execsql; 
        end; 读取显示图片: 
        with show_qry do begin 
          try          //显示图片 
            m_jpegStream:=TMemoryStream.Create; 
            try 
              TBlobField(fieldbyname('pic')).SaveToStream(m_JpegStream); 
              m_JpegStream.Position:=0; 
              try 
                pic_img.Picture.Graphic:=nil; 
                pic_img.Picture.Graphic:=TJpegImage.Create; 
                pic_img.Picture.Graphic.LoadFromStream(m_JpegStream);  //读Jpeg 
              except 
                pic_img.Picture.Graphic:=nil; 
              end; 
            except 
              showmessage('读取图片出错!'); 
            end; 
          finally 
            m_JpegStream.Free; 
          end;