【发布时间】:2014-08-28 21:08:08
【问题描述】:
我希望在保存到数据库之前减少大约 200KB 的图像大小。假设我有一个 39MB 左右的位图文件,我需要将位图转换为 Jpeg,然后减少 Jpeg 文件
function BMPtoJPG(var BMPpic, JPGpic: string):boolean;
var Bitmap: TBitmap;
JpegImg: TJpegImage;
begin
Result:= False;
Bitmap := TBitmap.Create;
try
Bitmap.LoadFromFile(BMPpic) ;
JpegImg := TJpegImage.Create;
try
JpegImg.CompressionQuality := 10; //in this case i set the quality to 10 so the file size will be around 200KB)
JpegImg.Assign(Bitmap);
JpegImg.Compress;
JpegImg.SaveToFile(JPGpic) ;
Result:=True;
finally
JpegImg.Free
end;
finally
Bitmap.Free;
end;
end;
我使用相同的图像文件在 Adobe Lightroom 程序中转换导出对话框,限制大小为 200KB,并与上述函数 BMPtoJPG 转换的图像进行比较。 Adobe Lightroom 的图像质量比函数方法好得多(文件大小都在 200KB 左右)
谁能告诉我如何编写代码来减小图像大小(限制大小为 200KB),同时质量不会下降太多。
感谢您的回答。
【问题讨论】:
-
您可能想尝试 jpg 2000 或 JBIG,它们与 JPG 相比提供更好的压缩。
-
为什么要将图像存储在数据库中?
-
用户能够将每个库存商品的图像存储到数据库中
-
哦,来吧!将图像存储为 BLOB 并没有什么不好。它甚至比文件系统工作得更快(空间受到影响)。
标签: image delphi bitmap jpeg lightroom