找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 64|回复: 8

图像批量压缩SHELL脚本

[复制链接]

95

主题

2302

回帖

4939

积分

论坛元老

积分
4939
发表于 2011-11-27 12:06:23 | 显示全部楼层 |阅读模式
一个朋友的站有很多图片,需要帮忙压缩,于是花了一个小时构思了这个SHELL,在此分享(IF那段我写的很烂,因为我不熟悉SHELL的IF的OR用法,只能分别拆开写了,换到PHP的话只用一个in_array就清爽多了,懂得兄弟希望能够帮忙指正)
Limit后面是限制的字节数,只有大于该字节才会进行处理
Quality是图像质量,取值0-100左开右闭区间,范围是正整数
DIR是要压缩的图片目录
使用该脚本之前请先安装ImageMagick,以便能够正常使用[ol]
  • yum -y install ImageMagickyum -y install ImageMagick[/ol]复制代码使用方法,把下面的代码保存成xxxx.sh,然后执行sh xxxx.sh[ol]
  • #! /bin/Bash
  • let Limit=350*1024
  • Quality=70
  • DIR="/root"
  • cd $DIR
  • for i in `find $DIR -name "*.???"`
  • do
  •         FSIZE=`wc -c $i|awk '{print $1}'`
  •         EXT=${i##*.}
  •         if [ $FSIZE -ge $Limit ] && [ "$EXT" == "jpg" ] || [ "$EXT" == "JPG" ] || [ "$EXT" == "png" ] || [ "$EXT" == "PNG" ] || [ "$EXT" == "bmp" ] || [ "$EXT" == "BMP" ]; then
  •                 convert -resize 800x600 -quality $Quality $i $i
  •                 echo $i is Okay.
  •         fi
  • done[/ol]复制代码里面的纵横的最大取值800*600,如果遇到超过的话,会自动按比例缩小到约束值

    [ 本帖最后由 shy9000 于 2011-11-27 13:03 编辑 ]
  • 回复

    使用道具 举报

    1423

    主题

    2315

    回帖

    8949

    积分

    论坛元老

    积分
    8949
    发表于 2011-11-27 12:09:47 | 显示全部楼层
    出售此楼层。。。







    [ 本帖最后由 0x59 于 2011-11-27 12:24 编辑 ]
    回复

    使用道具 举报

    1647

    主题

    9931

    回帖

    2万

    积分

    论坛元老

    积分
    24851
    发表于 2011-11-27 12:10:05 | 显示全部楼层
    这个命令   convert   是哪个程序的

    [ 本帖最后由 tobeychan 于 2011-11-27 12:39 编辑 ]
    回复

    使用道具 举报

    252

    主题

    1196

    回帖

    3192

    积分

    论坛元老

    积分
    3192
    发表于 2011-11-27 12:15:19 | 显示全部楼层
    不错哦。
    回复

    使用道具 举报

    19

    主题

    2922

    回帖

    5933

    积分

    论坛元老

    积分
    5933
    发表于 2011-11-27 12:18:56 | 显示全部楼层
    不错哦。
    回复

    使用道具 举报

    45

    主题

    2487

    回帖

    5123

    积分

    论坛元老

    积分
    5123
    发表于 2011-11-27 13:00:24 | 显示全部楼层


      跟cmd 不一样哦
    回复

    使用道具 举报

    33

    主题

    1761

    回帖

    3653

    积分

    论坛元老

    积分
    3653
    发表于 2011-11-27 13:03:46 | 显示全部楼层
    用find+exec,只需要一行.....

    回复

    使用道具 举报

    23

    主题

    707

    回帖

    1507

    积分

    金牌会员

    积分
    1507
    发表于 2011-11-27 13:05:19 | 显示全部楼层
    原帖由 Kokgog 于 2011-11-27 13:11 发表


    用find+exec,只需要一行.....


    知道,我对SHELL不是特别熟悉,So没办法,你看我那个啥的IF都写的那么烂就知道我对SHELL不了解了

    这类帖子要顶要顶
    回复

    使用道具 举报

    109

    主题

    5333

    回帖

    1万

    积分

    论坛元老

    积分
    11035
    发表于 2011-11-27 13:11:23 | 显示全部楼层
    吴哈哈
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|Discuz! X

    GMT+8, 2025-1-11 16:42 , Processed in 0.019821 second(s), 5 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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