前几天我问了这个问题并得到了答案: How to add a picture frame and insert the text in the image?
现在,当我将 TPanel 中的内容(1x 形状、1x TImage、2x TLabel)保存为 JPG 文件时,
该 JPG 文件的大小从 20kb(TImage 中图片的大小)增加到 620kb。
尺寸几乎相同。原始JPG文件320x320,新JPG图片361x440。
那么,如何减小这个尺寸呢?
这是来自 @iPath 的第一个问题的答案,这就是创建新 JPG 文件的方式:
procedure TForm1.SavePanelAsImage;
var
img: TBitmap;
begin
img := TBitmap.Create;
try
img.Width := fpPanel.Width;
img.Height := fpPanel.Height;
fpPanel.PaintTo(img.Canvas, 0, 0);
img.SaveToFile(fpFileName);
finally
img.Free;
end;
end;
最佳答案
您保存的不是 JPEG 图像。您已保存 Windows 位图。那根本没有压缩。它恰好具有 .jpg
扩展名,但这并不意味着文件本身就是 JPEG。
您需要使用TJPEGImage
来保存文件。使用 CompressionQuality
控制压缩属性(property)。将图像转换为位图后,将其转换为 JPEG
uses
jpeg;
procedure TForm1.SavePanelAsImage;
var
img: TBitmap;
JpegImage: TJPEGImage;
begin
img := TBitmap.Create;
try
img.Width := fpPanel.Width;
img.Height := fpPanel.Height;
fpPanel.PaintTo(img.Canvas, 0, 0);
JpegImage := TJPEGImage.Create;
try
JpegImage.CompressionQuality := ...;//you decide the value
JpegImage.Assign(img);
JpegImage.SaveToFile(fpFileName);
finally
JpegImage.Free;
end;
finally
img.Free;
end;
end;
关于delphi - 如何减小 JPG 文件的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13259190/