加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何减小JPG文件的大小?

发布时间:2020-12-15 09:43:45 所属栏目:大数据 来源:网络整理
导读:几天前我问了这个问题并得到了答案: How to add a picture frame and insert the text in the image? 现在,当我将来自TPanel(1x形状,1x TImage,2x TLabel)的内容保存为JPG文件时, JPG文件的大小从TIk的图片大小的20kb增加到620kb. 尺寸几乎相同.原始JPG文件
几天前我问了这个问题并得到了答案:
How to add a picture frame and insert the text in the image?

现在,当我将来自TPanel(1x形状,1x TImage,2x TLabel)的内容保存为JPG文件时,
JPG文件的大小从TIk的图片大小的20kb增加到620kb.

尺寸几乎相同.原始JPG文件320×320,新JPG图片361×440.

那么,如何减小这个尺寸呢?

这是第一个问题的答案,来自@iPath,这就是新JPG文件的创建方式:

procedure TForm1.SavePanelAsImage;
var
 img: TBitmap;
begin
 img := TBitmap.Create;
 try
  img.Width := fpPanel.Width;
  img.Height := fpPanel.Height;
  fpPanel.PaintTo(img.Canvas,0);
  img.SaveToFile(fpFileName);
 finally
  img.Free;
end;
end;

解决方法

您保存的内容不是JPEG图像.您已保存Windows位图.那根本没有压缩.碰巧有.jpg扩展,但这不会使文件本身成为JPEG.

您需要使用TJPEGImage来保存文件.使用CompressionQuality属性控制压缩.将图像放入位图后,将其传输到JPEG

uses
  jpeg;

procedure TForm1.SavePanelAsImage;
var
  img: TBitmap;
  JpegImage: TJPEGImage;
begin
  img := TBitmap.Create;
  try
    img.Width := fpPanel.Width;
    img.Height := fpPanel.Height;
    fpPanel.PaintTo(img.Canvas,0);
    JpegImage := TJPEGImage.Create;
    try
      JpegImage.CompressionQuality := ...;//you decide the value
      JpegImage.Assign(img);
      JpegImage.SaveToFile(fpFileName);
    finally
      JpegImage.Free;
    end;
  finally
    img.Free;
  end;
end;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读