DELPHI:压缩max并保持BITMAP

时间:2015-11-25 11:37:01

标签: delphi bitmap compression image-compression

我有一个用于将位图压缩为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的另一种方法对我也有好处.. 只压缩最大值并保持质量是我的目标

1 个答案:

答案 0 :(得分:0)

我会说使用PNG(可能是有损的或无损的),但事实证明我在与Alpha有关的较新版本的Delphi中存在与它们存在错误的真正问题。不管怎么说,Bitmaps都不支持Alpha ......去看看。

但是假设您希望将TBitmap作为其核心,并假设您使用的是一个非常过时的Delphi版本, 您可以使用TCompressionStream压缩位图。 TCompressionStream实际上可用于任何类型的数据,并与TFileStream或TMemoryStream或任何其他类型的TStream衍生物一起使用。

为此,您将创建一个TCompressionStream对象并使用TBitmap.SaveToSTream()将位图保存到TCompressionStream。结果将是位图数据的无损版本。

相关问题