我希望在保存到数据库之前减少大约 200KB 的图像大小。假设我有一个 39MB 左右的位图文件,我需要将位图转换为 Jpeg,然后减少 Jpeg 文件 <= 200KB(所有类型的图形文件都可以转换(例如 bmp、jpg、png),但最终的图形类型将是小于 200KB 的 Jpeg)。我正在编写以下代码尝试转换(在这种情况下,我将 jpg 质量设置为 10,因为我希望文件大小为 200KB):
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),同时质量不会下降太多。
感谢并感谢您的回答。