BLOBFIELD.loadfromfile('jpgfile')
再用TJPEG类读取TBLOBSTREAM
...显示即可
或直接用JPEGIMG控件中的DBJPEGIMG。

解决方案 »

  1.   

    procedure TForm1.Button2Click(Sender: TObject);
    var
      MemSize: Integer;
      Buffer: PChar;
      MyFile: TFileStream;
      Stream: TBlobStream;
      filename:string;
    begin
      OpenDialog1.Filter:='图形文件(*.jpg)|*.jpg';
      if OpenDialog1.Execute then
      begin
        filename:=OpenDialog1.FileName;
        MyFile:=TFileStream.Create(fileName,fmOpenRead);
        with table1 do
        begin
          Open;
          edit;
          Stream := TBlobStream.Create(FieldByName('PIC') as TBlobField, bmWrite);{‘Doc’为BLOB字段名}
          MemSize := MyFile.Size;
          Inc(MemSize);
          //增加的一字节给结尾的null
          Buffer := AllocMem(MemSize);
          try
            Stream.Seek(0, soFromBeginning);
           //流指针位置放到最前
            MyFile.Read(Buffer^,MemSize);
            Stream.Write(Buffer^,MemSize);
            FieldByName('Name').Asstring:=ExtractFileName(fileName);
            FieldByName('Size').Asstring:=inttostr(MemSize-1);
         finally
            MyFile.Free;
            Stream.Free;
         end;
           try
            table1.Post;
           except
             showmessage('保存失败!');
             halt;
           end;
         end;
       end;
    end;
      

  2.   

    Procedure TForm1.Button1Click(Sender:TObject);
    begin
    Table1.Insert;
    Table1Binary.LoadFromFile('C:\test.jpg');
    Table1.post;
    end;
    Procedure TForm1.Button2Click(Sender:Tobject);
    begin
    Table1Binary.SaveToFile('c:\test1.jpg');
    image1.Picture.LoadFromFile('c:\test1.jpg');
    end;
    **注:此处存放JPEG图片的字段为Binary类型的字段