如何调整图像大小/压缩图像以使其低于300kb

时间:2015-05-22 09:30:48

标签: delphi

我是Pascal和Delphi的新手,我试图找出如何压缩和/或调整图像大小以使其低于300kb。我不知道如何开始以及在哪里找到一个例子。有谁知道这是否可能?也许可以告诉我或者给我一个例子?我使用RAD Studio XE4进行开发。

我们说我得到了一个最常用类型的图像,如png或jpeg,它大于1024 x 768.如何将其设为1024 x 768?

1 个答案:

答案 0 :(得分:0)

调整图像大小的最简单方法可能如下:

procedure ResizeImage(Image : TGraphic; AWidth, AHeight : Integer);
var bmp : TBitmap;
begin
  bmp := TBitmap.Create;
  try
    bmp.PixelFormat := pf32bit;
    bmp.Width := AWidth;
    bmp.Height := AHeight;
    bmp.Canvas.StretchDraw(Rect(0,0,AWidth, AHeight), Image);
    Image.Assign(bmp);
  finally
    bmp.Free;
  end;
end;

请注意,虽然简单,但它有许多缺陷。您可能会丢失透明度信息。我不确定是否会保留原始图像的元信息。

也许不是所有的图形类都支持stretchdraw。我用JPEG测试过,但也许png或tif不支持它。

例程还假设TGraphic类知道如何为自己分配一个位图(大多数,如果不是全部,应该这样做)。

对于压缩,许多图像格式已压缩数据,JPEG,PNG,一些TIFF。使用比现有的更有效的压缩算法将是不容易的。