我是Pascal和Delphi的新手,我试图找出如何压缩和/或调整图像大小以使其低于300kb。我不知道如何开始以及在哪里找到一个例子。有谁知道这是否可能?也许可以告诉我或者给我一个例子?我使用RAD Studio XE4进行开发。
我们说我得到了一个最常用类型的图像,如png或jpeg,它大于1024 x 768.如何将其设为1024 x 768?
答案 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。使用比现有的更有效的压缩算法将是不容易的。