脚本批量压缩图片

在目前的一个项目中,后台运营人员传图的时候,都是传的大图,导致前端网页加载缓慢,我用微信开发者工具查看了一下,光图片就有3~4MB,所以找到了一些工具来方便地进行图片压缩。

基于PIL进行图片压缩

本来想用基于PIL使用python进行图片压缩,无奈PIL装了半天没装上,有能装上的,还是可以用pil的,这个是参考文章: python脚本编程:批量压缩图片大小

基于ImageMagick进行图片压缩

  • mogrify方式
    批量压缩当前文件夹下的所有png图片
    mogrify -path newdir -resize 200% *.png
  • convert的shell脚本
    找到当前文件夹及子文件夹中大于400K的img,并使用convert压缩该文件;
#!/bin/bash
echo "resize image";
# 找出大于400K的图片
for i in `find . -size +400k`;
do
# 压缩其中宽高大于450x1000的,到最大450x1000
convert -resize "450x1000>" $i  $i;
# 压缩图片到65%
# convert $i -resize 65% $i;
# 压缩图片指定宽度为400
# convert -resize "400" $i  $i;
echo "resize image $i";
done
  • 压缩相关指令:
    -quality
    图片质量,jpg默认99,png默认75
    -resize
    60% 压缩到原有大小的65%
    100×100 高度和宽度比例保留最高值,高比不变
    100×100^ 高度和宽度比例保留最低值,宽高比不变
    100×100! 宽度和高度强制转换,忽视宽高比
    100×100> 更改长宽,当图片长或宽超过规定的尺寸
    100×100< 更改长宽 只有当图片长宽都超过规定的尺寸
    100×100^> 更改长宽,当图片长或宽超过规定的尺寸。高度和宽度比例保留最低值
    100×100^< 更改长宽,只有当图片长宽都超过规定的尺寸。高度和宽度比例保留最低值
    100 按指定的宽度缩放,保持宽高比例
    x100 按指定高度缩放,保持宽高比

PNG和JPG

  • 区别:
    png是一种无损格式,JPG是有损格式。JPG在处理颜色很多的图片时,根据压缩率的不同,有时会去掉一些肉眼识别差距较小的中间颜色。但是PNG对于无损这个基本要求,会严格保留所有的色彩数。 所以。图片尺寸大,或者色彩数量多特别是渐变色的多的时候,PNG的体积会明显大于JPG
    其实png和jpeg都可以,image载入以后,在内存里面是一样的.但是png的压缩算法解压快很多,jpeg的话可以有很高的压缩比(当然会有损失)
    所以,你可以自己来平衡文件大小,图片质量和解压代价之间的关系

  • 什么时候用JPG或PNG
    Android的界面能用png最好是用png了,因为32位的png颜色过渡平滑且支持透明。jpg是像素化压缩过的图片,质量已经下降了,再拿来做9path的按钮和平铺拉伸的控件必然惨不忍睹,要尽量避免。对于颜色繁杂的,比如照片墙纸之类的图片(有些应用的启动画面喜欢搞这种),那用jpg是最好不过了,这种图片压缩前压缩后肉眼分辨几乎不计,如果保存成png体积将是jpg的几倍甚至几十倍,严重浪费体积。

在线压缩图片工具

可以批量压缩图片,比国内动不动就要会员收费的好多了,唯一的缺陷就是指定文件大小来压缩时,还是需要注册会员。
https://tinypng.com/

参考文章

ImageMagick常用指令详解
ImageMagick:批量处理图像的超级利器

    原文作者:一只好奇的茂
    原文地址: https://www.jianshu.com/p/596fd06c8c43
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞