我有一个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;
Run Code Online (Sandbox Code Playgroud)
更新II 很多人都回应说jpeg不是这种情况下使用的图形类型.了解.不是为了击败死马,但我已经能够使用其他程序(即Photoshop)并将其转换为漂亮的jpeg.我用来创建图表(fusioncharts)的工具也可以将它导出到漂亮的jpeg(见下文).有什么不同?
正如其他人所说,JPEG 对于此类图像来说根本就是错误的格式 - 并且由于具有高频色度边缘,您可能会得到 JPEG 最糟糕情况的图像之一!
我建议您获取Paint.Net的副本,并尝试以不同格式(PNG、JPEG、GIF、BMP 等)保存/预览图像,并亲自了解图像大小、质量和性能之间的权衡。
我已经尝试使用 Paint.net 将测试图像保存为 JPEG,并获得与 Delphi 为您提供的完全相同的质量,因此您(或 Delphi)正在做的事情现在没有问题......
更新: 根据维基百科...
JPEG 标准中定义了可选的无损模式;然而,该模式并未在产品中得到广泛支持。
我猜测 FusionCharts 和 Photoshop 有一种指定此模式的方法。通常不使用它,因为 JPEG 通常被认为是有损压缩的同义词。
总之,虽然 JPEG 文件可以支持无损压缩,但 JPEG 并不是理想的格式,因为它没有得到广泛支持。如果你想要无损,PNG 仍然是更好的选择。图像的 PNG 压缩版本比无损压缩的 JPEG 版本小 30%(71K 与 101K)
| 归档时间: |
|
| 查看次数: |
6643 次 |
| 最近记录: |