程序需要将图片存入数据库,但是图片比较大,在后续的处理工作中比较麻烦,考虑生成缩略图。
但是我在做的时候发现,网上的一般做法,在imageEn控件下面没办法实现。使用ImageEn控件是因为它能支持多种图像格式。请教各位大侠有没有什么好的方法来实现缩略图,并存入sqlserver数据库。 谢谢!
但是我在做的时候发现,网上的一般做法,在imageEn控件下面没办法实现。使用ImageEn控件是因为它能支持多种图像格式。请教各位大侠有没有什么好的方法来实现缩略图,并存入sqlserver数据库。 谢谢!
bmp.Canvas.StretchDraw(Rect(0,0,Width,Height), SourceJpg);好像只能支持bmp,jpg其他格式就不行,而且在ImageEN控件下面没有作用。
如果转换格式的话,除了bmp,jpg的转换,其他格式做起来好像都比较麻烦。能不能给2个一般做缩略图的方法,我看看是不是我哪里做的有问题。。
bmp: TGpImage;
ThumbImage: TGpImage;
g: TGpGraphics;
begin
bmp := TGpBitmap.Create('D:\GdiplusC\Media\msn.jpg');
ThumbImage := bmp.GetThumbnailImage(64, 64); // 获得缩略图
g := TGpGraphics.Create(Canvas.Handle);
g.DrawImage(ThumbImage, 0, 0); // 显示缩略图
g.Free;
ThumbImage.Free;
bmp.Free;
end;
GDI+支持BMP,JPG之外的格式吗?
var
bmp: TGpImage;
ThumbImage: TGpImage;
Adapter: TStreamAdapter;
Stream: TMemoryStream;
Clsid: TGUID;
begin
bmp := TGpBitmap.Create('D:\GdiplusC\Media\msn.jpg');
ThumbImage := bmp.GetThumbnailImage(64, 64); // 获得缩略图
Stream := TMemoryStream.Create;
Adapter := TStreamAdapter.Create(Stream, soOwned);
GetEncoderClsid('image/jpeg', Clsid);
ThumbImage.Save(Adapter, Clsid);
Stream.Position := 0;
// 保存缩略图到二进制数据字段,假定你的字段名为BlobField
BlobField.LoadFromStream(Stream);
ThumbImage.Free;
bmp.Free;
end;
to:maozefa(阿发伯)
GDI+支持BMP,JPG之外的格式吗?我没用过GDI+
我怎么样才可以使用GDI+,需要安装相关控件吗?
http://blog.csdn.net/maozefa/archive/2007/11/12/1880484.aspx
使用时uses Gdiplus;
var
bmp: TGpImage;
ThumbImage: TGpImage;
Stream: TMemoryStream;
Bitmap: TBitmap;
begin
bmp := TGpBitmap.Create('D:\GdiplusC\Media\msn.jpg');
ThumbImage := bmp.GetThumbnailImage(64, 64); // 获得缩略图
Bitmap := TBitmap.Create;
Bitmap.Handle := TGpBitmap(ThumbImage).GetHBitmap(0);
Bitmap.SaveToStream(Stream);
Stream.Position := 0;
// 保存缩略图到二进制数据字段,假定你的字段名为BlobField
BlobField.LoadFromStream(Stream);
Bitmap.Free;
ThumbImage.Free;
bmp.Free;
end;
及Stream.Free;