如何将图片的尺寸缩小上传到数据库?
我做了个程序是将图片上传到数据库里存放的,现在已经实现了这个功能!但由于有些图片太大,我想将图片缩小后再上传到数据库!(例如将图片缩小到原图的1/8)但我不知道如何将图片缩小!以下是上传图片的代码
var
F:TFileStream
begin
F:=TFileStream.Create('C:\1.jpg',fmOpenRead);
query.Insert;
TBlobField(queryt1).loadfromstream(F);
query.Post;
end;
如何将图片缩小到原图的1/8后再上传呢?麻烦各位帮忙看看,小弟万分感谢
[解决办法]
先用Tjpegimage将原有图片缩小之后再保存
[解决办法]
var
bmp,backbmp:TBitmap;
begin
backbmp:=TBitmap.Create;
backbmp.Assign(Image1.Picture.Bitmap);
try
bmp:=TBitmap.Create;
bmp.PixelFormat:=pf24bit;
Image1.AutoSize:=True;
bmp.Width:=trunc(0.9*Image1.Width);
bmp.Height:=trunc(0.9*Image1.Height);
//保持最大限度不失真
SetStretchBltMode(bmp.Canvas.Handle,HALFTONE);
StretchBlt(bmp.Canvas.Handle,0,0,bmp.Width,bmp.Height,
backbmp.Canvas.Handle,0,0,backbmp.Width,backbmp.Height,SRCCOPY);
Image1.Picture.Bitmap.Assign(bmp);
Image1.Top:=Self.Height div 2-Image1.Height div 2;
Image1.Left:=Self.Width div 2-Image1.Width div 2;
bmp.PixelFormat:=pf24bit;
Self.Caption:='图象尺寸为:'+IntToStr(Image1.Width)+'*'+IntToStr(Image1.Height);
bmp.Free;
except
end;
backbmp.Free;
backbmp:=nil;
[解决办法]
也可以用gdi+
http://www.cnblogs.com/del/archive/2008/07/02/1234229.html
[解决办法]
直接去百度一下,选择合适大小的图片就可以了。
[解决办法]
最简单的缩小图片的方法就是使用API函数StretchBlt,缩小后再使用ADO.Stream对象存入数据库。
[解决办法]
把几个点的数据取平均值保存成一个点就可以缩小了。
[解决办法]
体积缩小 用 StretchBlt
质量变差 (JPG格式) 可以用 GDI+的保存