全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 2121|回复: 17

[疑问] 【开源】Linux环境下,自动批量压缩图片的解决方案

[复制链接]
发表于 2019-8-23 13:34:18 | 显示全部楼层 |阅读模式
OptiPNG和jpegoptim工具来可以对图片进行无损压缩,于是xiaoz在此基础上编写了一个shell脚本来调用OptiPNG、jpegoptim工具自动完成批量压缩图片。



目前支持.jpg/.jpeg/.bmp/.png格式图片


安装OptiPNG和jpegoptim

Shell脚本需要调用OptiPNG和jpegoptim这两个工具,安装OptiPNG、jpegoptim是必须的,这里仅以CentOS为列,其它Linux系统可自行搜索安装。

  1. #安装epel源
  2. yum -y install epel-release
  3. #安装OptiPNG
  4. yum -y install optipng
  5. #安装jpegoptim
  6. yum -y install jpegoptim
复制代码


调用shell脚本批量压缩

  1. #下载批量压缩脚本
  2. wget https://raw.githubusercontent.com/helloxz/shell/master/img_compress.sh
  3. #执行shell脚本
  4. bash img_compress.sh /data/wwwroot/imgurl
复制代码


其中/data/wwwroot/imgurl修改为自己的图片目录(需要使用绝对路径)

crontab定时执行

  1. #先将脚本赋予执行权限
  2. chmod +x img_compress.sh
  3. #添加定时任务
  4. crontab -e
  5. #将内容复制到最后并保存(每小时执行一次)
  6. */60  * * * * /yourpath/img_compress.sh /data/wwwroot/imgurl > /dev/null
  7. #重载crontab
  8. service crond reload
复制代码


更多说明请参考原文:https://www.xiaoz.me/archives/13511
脚本地址:https://github.com/helloxz/shell/blob/master/img_compress.sh
发表于 2019-8-23 14:14:35 | 显示全部楼层
本帖最后由 aming 于 2019-8-23 14:27 编辑

搜索看了一眼,比你脚本更简单

首先真是不明白,用centos用什么第三方库? 用centos用第三方库为什么不干脆直接用 debian ?用centos你是图什么,不就图centos万年不更的老库,免维护嘛。

安装
  1. apt install optipng jpegoptim
复制代码


压缩命令:

  1. find . -iname '*.png' -print0 | xargs -0 optipng -o7 -preserve
  2. find . -iname '*.jpg' -print0 | xargs -0 jpegoptim --strip-all --preserve --totals --all-progressive
复制代码


上面是遍历目录的,也可以指定目录:images_folder改成自己的

  1. find images_folder/ *.{jpeg,jpg} -exec jpegoptim {} \;
  2. find images_folder/ *.png -exec optipng {} \;
复制代码


什么,命令长?命令不用记,自己写入 .bashrc  替换成简单命令就可以了,之后用 pngz , jpgz 命令就是了

  1. alias pngz='find . -iname '*.png' -print0 | xargs -0 optipng -o7 -preserve'
  2. alias jpgz='find . -iname '*.jpg' -print0 | xargs -0 jpegoptim --strip-all --preserve --totals --all-progressive'
复制代码

点评

大佬消消气,对不起,是我错了。  发表于 2019-8-23 14:16
发表于 2019-8-23 13:37:15 | 显示全部楼层
前排花生牛奶洗面奶
发表于 2019-8-23 13:42:42 | 显示全部楼层
本帖最后由 hlsk 于 2019-8-23 13:44 编辑

先mark 找机会试试

有没有压缩前后对比啊
 楼主| 发表于 2019-8-23 13:54:46 | 显示全部楼层
hlsk 发表于 2019-8-23 13:42
先mark 找机会试试

有没有压缩前后对比啊

自己跑一下脚本就可以对比了,这是我执行后的部分结果。另外也可以适当修改下脚本提高压缩级别(级别越高越吃CPU)
  1. /data/wwwroot/imgurl/imgs/2019/08/c4719f67827b47b5.jpg 2208x1242 24bit N Exif IPTC JFIF  [OK] 409022 --> 136213 bytes (66.70%), optimized.
  2. /data/wwwroot/imgurl/imgs/2019/08/97e5c418839595f8.jpg 2208x1242 24bit N Exif IPTC JFIF  [OK] 409641 --> 143095 bytes (65.07%), optimized.
  3. /data/wwwroot/imgurl/imgs/2019/08/cd1337dbe4a9de63.jpg 2208x1242 24bit N Exif IPTC JFIF  [OK] 369246 --> 130287 bytes (64.72%), optimized.
  4. /data/wwwroot/imgurl/imgs/2019/08/643a8733650289fc.jpg 2208x1242 24bit N Exif IPTC JFIF  [OK] 469150 --> 182604 bytes (61.08%), optimized.
  5. /data/wwwroot/imgurl/imgs/2019/08/3fa4595aafbdcec4.jpg 2208x1242 24bit N Exif IPTC JFIF  [OK] 498075 --> 193409 bytes (61.17%), optimized.
  6. /data/wwwroot/imgurl/imgs/2019/08/6b3a4381757675e0.jpg 776x1173 24bit N JFIF  [OK] 294311 --> 212403 bytes (27.83%), optimized.
  7. /data/wwwroot/imgurl/imgs/2019/08/c04b62741e71b4ab.jpg 2208x1242 24bit N Exif IPTC JFIF  [OK] 502573 --> 197138 bytes (60.77%), optimized.
  8. /data/wwwroot/imgurl/imgs/2019/08/cc3e5311aa96dcd1.jpg 2560x1440 24bit N JFIF  [OK] 787748 --> 162981 bytes (79.31%), optimized.
  9. /data/wwwroot/imgurl/imgs/2019/08/f1c439711b64a9f1.jpg 1229x1410 24bit N JFIF  [OK] 308777 --> 136253 bytes (55.87%), optimized.
  10. /data/wwwroot/imgurl/imgs/2019/08/74c80a3b91d20c4e.jpg 1386x1920 24bit N Exif JFIF  [OK] 241196 --> 241196 bytes (0.00%), skipped.
  11. /data/wwwroot/imgurl/imgs/2019/08/93f17bbf3f4e00d0.jpg 1056x984 24bit N Exif JFIF  [OK] 231805 --> 115288 bytes (50.27%), optimized.
复制代码
发表于 2019-8-23 14:02:28 | 显示全部楼层
是否会检查,压缩过的第二次会跳过吧,不然会浪费时间
 楼主| 发表于 2019-8-23 14:08:46 | 显示全部楼层
aming 发表于 2019-8-23 14:02
是否会检查,压缩过的第二次会跳过吧,不然会浪费时间

脚本默认查找60分钟以内曾被修改过的图片文件(再加上定时任务1小时执行一次,这样就不会去压缩重复的图片),并且大于100kb的图片才会进行压缩,您也可以下载脚本后对这些设定自行做出修改(图片的压缩等级也可以适当修改)。
发表于 2019-8-23 14:09:58 来自手机 | 显示全部楼层
什么时候把功能整合进图床,brotli不够用了
发表于 2019-8-23 14:18:56 | 显示全部楼层
向大佬学习
发表于 2019-8-23 14:24:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-4-24 16:17 , Processed in 0.067509 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表