Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何调整/压缩图像大小以使其小于300kb_Delphi - Fatal编程技术网

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

Delphi 如何调整/压缩图像大小以使其小于300kb,delphi,Delphi,我是Pascal和Delphi的新手,我正在尝试找出如何压缩和/或调整图像大小以使其小于300kb。我不知道如何开始,在哪里可以找到一个例子。有人知道这是否可能吗?给我看看或者给我举个例子?我正在使用RAD Studio XE4进行开发 假设我得到了一张最常用的图像,比如png或jpeg,它比1024x768大。如何将其设置为1024 x 768?调整图像大小的最简单方法可能是: procedure ResizeImage(Image : TGraphic; AWidth, AHeight :

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


假设我得到了一张最常用的图像,比如png或jpeg,它比1024x768大。如何将其设置为1024 x 768?

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

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。拥有比现有更高效的压缩算法绝非易事

你需要先决定如何解决这个问题。1.您想缩小还是压缩?裁员肯定会丢失信息。压缩可以是有损或无损的。2.你有什么样的形象?照片最好使用JPEG有损压缩。屏幕截图通常最好使用PNG无损压缩。必须能够上传最常用的图像类型,如PNG、jpeg。。。所以我可以限制图片的类型。但是后来呢?比方说,如果图像较大,我希望图像为1024 x768。我该怎么做?获取一个支持高质量图像大小调整的图像库。您可能需要花一些时间评估候选库。有很多。这里的一个问题不是进行评估的方法。@MmynameStackflow:为什么不先使用谷歌?这应该是你的第一步!看到这个话题我首先想到的是结果和完整的解决方案。。。