// 绘制 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;