814123 2018-07-01 23:10 采纳率: 25%
浏览 1150
已采纳

delphi 利用TWICImage类来做图片的像素压缩?

比如1MB的JPG图片,不改变像素大小,把容量压缩到100KB,用TWICImage类如何实现,麻烦老师给代码参考,谢谢。
最好支持大部分图片格式,JPG BMP GIF PNG TIF。

  • 写回答

1条回答 默认 最新

  • 堕落恶魔_Delphi 2018-07-02 21:18
    关注

    只有有损处理才能做到这点, 处理方式取决于你的图像格式
    对于JPG来说, 就是调整压缩比了, TWICImage没有针对JPG封装压缩比接口, 可以使用TJPGEImage.CompressionQuality来修改(1压缩比最大质量最差 100压缩比最小质量最好)
    使用方式类似如下代码, 值得注意的是, 必须要先把原始图像转换为BMP格式才能调用TJPEGImage的压缩(参看Compress过程帮助信息)

    var
      Jpg,Jpo:TJPEGImage;
      Bmp:TBitmap;
    begin
      Bmp:=TBitmap.Create;
      Jpo:=TJPEGImage.Create;
      Jpo.LoadFromFile('1.Jpg');
      Bmp.Assign(Jpo);
    
      Jpg:=TJPEGImage.Create;
      Jpg.Assign(Bmp);
      Jpg.CompressionQuality:=30;
      Jpg.Compress;
      Jpg.SaveToFile('2.jpg');
      Jpg.Free;
    
      Jpo.Free;
      Bmp.Free;
    end;
    
    

    另外还有2中方式可以考虑
    1.使用其他图像格式, 比如GIF PNG 不过这个一般变化不大 达不到1M变成100K的效果
    2.降低颜色位数, 这个一般用于BMP格式, 对于颜色不复杂的图像效果很明显

    另外, 说一句, 除了某些特殊内容图片(比如大量纯色块图片), 在不想降低分辨率的情况下不太可能达到都是JPG格式大小又能达到1/10的压缩比, 就算达到了画面也可以用惨不忍睹来形容

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

问题事件

  • 已采纳回答 8月23日

悬赏问题

  • ¥15 torch框架下的强化学习DQN训练奖励值浮动过低,希望指导如何调整
  • ¥35 西门子博图v16安装密钥提示CryptAcquireContext MS_DEF_PROV Error of containger opening
  • ¥15 mes系统扫码追溯功能
  • ¥40 selenium访问信用中国
  • ¥20 在搭建fabric网络过程中遇到“无法使用新的生命周期”的报错
  • ¥15 Python中关于代码运行报错的问题
  • ¥500 python 的API,有酬谢
  • ¥15 软件冲突问题,软件残留问题
  • ¥30 有没有人会写hLDA,有偿求写,我有一个文档,想通过hLDA得出这个文档的层次主题,有偿有偿!
  • ¥50 有没有人会写hLDA,有偿求写,我有一个文档,想通过hLDA得出这个文档的层次主题,有偿有偿!
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部