我有一个用于将位图压缩为JPEG的功能。
procedure BmptoJpeg(Bmp : TBitmap; JpgStream: TStream);
var
Jpg: TJPEGImage;
begin
Jpg := TJPEGImage.Create;
try
Jpg.Assign(Bmp);
Jpg.CompressionQuality := 10;
Jpg.Compress;
Jpg.SaveToStream(JpgStream);
finally
Jpg.Free;
end;
end;
但这不适合原始位图的高质量。 还有另一种保持质量和压缩最大位图的方法吗? 没有压缩到JPEG的另一种方法对我也有好处.. 只压缩最大值并保持质量是我的目标
答案 0 :(得分:0)
我会说使用PNG(可能是有损的或无损的),但事实证明我在与Alpha有关的较新版本的Delphi中存在与它们存在错误的真正问题。不管怎么说,Bitmaps都不支持Alpha ......去看看。
但是假设您希望将TBitmap作为其核心,并假设您使用的是一个非常过时的Delphi版本, 您可以使用TCompressionStream压缩位图。 TCompressionStream实际上可用于任何类型的数据,并与TFileStream或TMemoryStream或任何其他类型的TStream衍生物一起使用。
为此,您将创建一个TCompressionStream对象并使用TBitmap.SaveToSTream()将位图保存到TCompressionStream。结果将是位图数据的无损版本。