gpt4 book ai didi

delphi - 使用 TJpegImage 组件将 bmp 转换为 jpg 时出现问题

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

我有一个 bmp 文件,正在尝试将其转换为 jpeg 格式。使用以下代码创建的 jpeg 失去了很多清晰度。我尝试过调整很多设置,但没有效果。

有没有人有一个可以将 bmp 文件转换为 jpeg 的函数?

var
Bmp: TBitmap;
Jpg: TJPEGImage;
begin
Bmp := TBitmap.Create;
Jpg := TJPEGImage.Create;
try
Bmp.LoadFromFile(BmpFileName);
Jpg.Assign(Bmp);
jpg.PixelFormat :=jf24bit; // or jf8bit
Jpg.CompressionQuality := 100;
Jpg.ProgressiveDisplay := False;
Jpg.ProgressiveEncoding := False;

Jpg.SaveToFile(JpgFileName);
finally
Jpg.Free;
Bmp.Free;
end;
end;

更新 II 很多人回应说 jpeg 不是在这种情况下使用的图形类型。明白了。不是为了打败一个死马,但我已经能够使用其他程序(即 Photoshop)并将其转换为漂亮的 jpeg。我用来创建图表的工具(fusioncharts)也能够将其导出为漂亮的 jpeg(见下文)。有什么区别?

最佳答案

如果你想损失尽可能少的质量,那么你应该尽可能少地压缩,即设置CompressionQuality := 100

更新

JPG 图像格式设计用于照片和类似的光栅图片。 JPG 采用破坏性压缩来减小文件大小。然而,对于较大的质量值 (> ~80),这种压缩的视觉效果可以忽略不计,因为照片不包含大面积的相同颜色、非常规则的形状等。

JPG 格式绝不用于摄影图片以外的任何内容。例如,图表、屏幕截图等确实包含大面积完全相同的颜色、非常规则的形状等,在 JPG 压缩时将显示清晰的伪像。对于这种类型的光栅图像,请使用 PNG。 PNG也是一种压缩格式(也是一种非常非常好的格式!),但压缩是非破坏性的。

所以请不要使用 JPG 作为您的图表!使用PNG!

关于delphi - 使用 TJpegImage 组件将 bmp 转换为 jpg 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3102043/

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