设为首页收藏本站

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย french

搜索
热搜: 活动 交友 discuz

图像批量压缩SHELL脚本 [复制链接]
查看:69 | 回复:8

90

主题

1602

回帖

3552

积分

论坛元老

积分
3552
发表于 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 编辑 ]
  • 1251

    主题

    1946

    回帖

    7751

    积分

    论坛元老

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







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

    1562

    主题

    7592

    回帖

    1万

    积分

    论坛元老

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

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

    245

    主题

    998

    回帖

    2799

    积分

    金牌会员

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

    18

    主题

    2536

    回帖

    5208

    积分

    论坛元老

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

    44

    主题

    2330

    回帖

    4810

    积分

    论坛元老

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


      跟cmd 不一样哦

    31

    主题

    1606

    回帖

    3357

    积分

    论坛元老

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

    22

    主题

    594

    回帖

    1288

    积分

    金牌会员

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


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


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

    这类帖子要顶要顶

    91

    主题

    4681

    回帖

    9715

    积分

    论坛元老

    积分
    9715
    发表于 2011-11-27 13:11:23 | 显示全部楼层
    吴哈哈
    您需要登录后才可以回帖 登录 | 立即注册

    论坛客服/商务合作/投诉举报:2171544 (QQ)
    落伍者创建于2001/03/14,本站内容均为会员发表,并不代表落伍立场!
    拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!
    落伍官方微信:2030286 邮箱:(djfsys@gmail.com|tech@im286.com)
    © 2001-2014

    浙公网安备 33060302000191号

    浙ICP备11034705号 BBS专项电子公告通信管[2010]226号

      落伍法律顾问: ITlaw-庄毅雄

    Archiver|手机版|Discuz! X

    GMT+8, 2026-3-28 10:58 , Processed in 0.017868 second(s), 4 queries , Gzip On, Redis On.

    返回顶部