美文网首页Android开发
图片扫描、压缩脚本

图片扫描、压缩脚本

作者: iceIC | 来源:发表于2019-05-22 14:44 被阅读20次

最近需要优化程序大小,想着先从图片资源入手,正好有一个图片压缩网站 https://tinypng.com/。因此写了个shell脚本实现扫描需要压缩的图片并且上传到该网站压缩并下载压缩后的图片功能。

  1. 首先需要登录该压缩网站获取一个API Key


    获取ApiKey
  2. 创建一个compress.sh文件,并把下面的内容复制粘贴

#sh compress.sh directory size
#for example:    sh compress.sh . +50k
#默认directory为当前目录、size为+50k
size=$2
#if [[ size="" ]]; then
#   size=+50k
#fi
directory=$1
#if [[ directory="" ]]; then
#   directory=.
#fi
result=$(find $directory \( -path '*/build' -prune -o -path '*/Docs' -prune \) -o \( -name *.png -o -name *.jpg \) -size $size -print)


function compress {

    YOUR_API_KEY=abcdefghijklmnopqrstuvwxyz012345...
    pic_path=$1

    echo " start compress for $pic_path "

    result=$(curl https://api.tinify.com/shrink \
         --user api:$YOUR_API_KEY \
         --data-binary @$pic_path)
    # result="{"input":{"size":69178,"type":"image/png"},"output":{"size":22121,"type":"image/png","width":720,"height":1500,"ratio":0.3198,"url":"https://api.tinify.com/output/8j7tr7mkygc0je25gf5ag792ekd6jt48"}}"
    # grep -P 'http[^"]*"' $result -o
    pic_url=$(echo $result | sed 's/.*\(http[^"}]*\).*/\1/g')
    # pic_path=./screen.png
    #https://api.tinify.com/output/8j7tr7mkygc0je25gf5ag792ekd6jt48
    # echo $pic_url
    curl $pic_url \
         --user api:$YOUR_API_KEY \
         --output ${pic_path}.compress

    echo " compress success for $pic_path "
}

OLD_IFS="$IFS"
IFS=" "
array=($result)
IFS="$OLD_IFS"
for path in ${array[@]}
do
   compress $path
   # echo $path #./Module_Base/src/main/res/drawable-xxhdpi/icon_newuser_first_page1.png
done

# echo $result

echo shell =\> finish
  1. 将获取的API Key替换compress.sh文件中的abcdefghijklmnopqrstuvwxyz012345...字符串
  2. 最后就是尽情的使用了
    sh compress.sh ${要扫描的目录} ${大小限制}
    比如: sh compress.sh . +50k 表示扫描当前文件夹(包括子文件夹)下的所有大小大于50k的jpg和png图片并压缩。
    image.png
    可以明显的看到 pic_login_bg.jpg文件由59077B变为了41957B,压缩率还是很明显的。
    image.png

该shell会在当前待压缩图片的目录中生成一个 .compress 后缀的压缩后图片,如果对压缩后的图片满意,重命名去掉 .compress 后缀即可。

  1. 注意事项
    当你想过滤某些文件夹(不必进行压缩,所以都不必需要扫描)。你可以对源码的 result=$(find $directory \( -path '*/build' -prune -o -path '*/Docs' -prune \) -o \( -name *.png -o -name *.jpg \) -size $size -print) 该行进行修改。
    简单提下, -path '*/build' -prune -o -path '*/Docs' -prune 这一段代码就是过滤所有 build文件夹和 Docs文件夹下的图片。

相关文章

  • 图片扫描、压缩脚本

    最近需要优化程序大小,想着先从图片资源入手,正好有一个图片压缩网站 https://tinypng.com/。因此...

  • pngquant图片压缩

    pngquant pngquant可以通过命令行压缩png图片。 脚本批量压缩png图片 quality表示压缩的...

  • 项目图片分析和自动压缩脚本(python)

    1) 脚本的功能 对项目中的图片(某一个目录的图片)使用tinify 进行批量压缩, 压缩完毕之后存到当前的脚本目...

  • 利用Guetzli批量压缩图片

    今天玩了下谷歌的开源图片压缩工具Guetzli,发现单张图片压缩效果还是不错的,就写了个简单的python脚本,批...

  • 脚本批量压缩图片

    在目前的一个项目中,后台运营人员传图的时候,都是传的大图,导致前端网页加载缓慢,我用微信开发者工具查看了一下,光图...

  • .png图片批量压缩脚本

    目的应用开发中,安装包的大小是很重要的,所以需要对资源进行压缩,特别是图片。这是一个python编写的简单的.pn...

  • 宾馆管理系统

    图片存储表设计(Sys_Image) 说明:限制图片大小,后台不压缩图片 脚本 宾馆房间表(Hotel_Room)...

  • 使用python进行图片压缩

    压缩图片文件 可下载的脚本文件下载下来,记着后缀为.py 本地电脑环境 脚本基于python3.7.1 如果没有下...

  • 项目图片无损压缩脚本

    一丶 有时候项目工程太大,可以利用tinify 提供的api,进行压缩 二丶 准备工作 2.申请Key https...

  • guetzli批量压缩图片脚本

    有空点个赞 一、开发记录 二、源码 三、测试截图

网友评论

    本文标题:图片扫描、压缩脚本

    本文链接:https://www.haomeiwen.com/subject/sexuzqtx.html