// 繪製 BMP 格式圖像 procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); var bmp : TBitmap; stream: TMemorystream; begin if Column.FieldName <> 'Img' then exit; bmp := TBitmap.Create; stream:= TMemorystream.Create; tBlobField(myquery1.FieldByName('img')).SaveToStream(stream); stream.Position := 0; try bmp.LoadFromStream(stream); //Column.Field.AsString 存放圖片路徑 DBGridEh1.Canvas.StretchDraw(Rect, bmp); bmp.Free; Except on e : exception do bmp.Free; end; end; 繪製 jpg格式圖像 : procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); var bmp : TBitmap; jpg: TJpegImage; stream: TMemorystream; begin if Column.FieldName <> 'Img' then exit; if myquery1.State in [dsInsert, dsEdit] then exit; stream := TMemorystream.Create; tBlobField(myquery1.FieldByName('img')).SaveToStream(stream); stream.Position := 0; jpg := TJpegImage.Create; jpg.LoadFromStream(stream); bmp := TBitmap.Create; bmp.Width := jpg.Width; BMP.Height := jpg.Height; BMP.Canvas.Draw(0,0, jpg); jpg.Free; try DBGridEh1.Canvas.StretchDraw(Rect, bmp); bmp.Free; Except on e : exception do bmp.Free; end; end; function BmpToJpg(ms: TMemorystream): TMemorystream; Var Jpg : TJpegImage; BMP : TBitMap ; begin Jpg := TJpegImage.Create; BMP := TBitmap.Create; BMP.LoadFromStream(ms); Jpg.Assign(BMP); Result := TMemorystream.Create; jpg.SaveToStream(Result); Result.Position := 0; BMP.Free ; Jpg.Free; end; function JpgToBmp(jpgStream: Tmemorystream): Tmemorystream; var MyJPEG: TJPEGImage; MyBMP: TBitmap; begin MyJPEG := TJPEGImage.Create; MyJPEG.LoadFromStream(jpgStream); MyBMP := TBitmap.Create; MyBMP.Width := MyJPEG.Width; MyBMP.Height := MyJPEG.Height; MyBMP.Canvas.Draw(0,0, MyJPEG); Result := Tmemorystream.Create; MyBMP.SaveToStream(Result); Result.Position := 0; MyBMP.Free; MyJPEG.Free; end;