gpt4 book ai didi

delphi - 如何减小 JPG 文件的大小?

转载 作者:行者123 更新时间:2023-12-03 15:03:20 25 4
gpt4 key购买 nike

前几天我问了这个问题并得到了答案: 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com