图片压缩脚本

写在前面

这是一个图片压缩脚本,Github 地址:https://github.com/ytempest/TinyImg
触发机制:开发过程中美工给到的 UI 图片太大,产品又在意应用包体大小,这个时候就是脚本策马奔腾的时候了

TinyPNG 简介

TinyPNG 是一个在线压缩 PNG 或 JPEG 格式图片的工具,同时压缩质量比较好。

TinyPNG 官网地址:https://tinypng.com/

附上一张官网的截图:
skypegmwcn


前言

当时写这个脚本的原因主要是网上很多的 TinyPNG 的脚本都是用 Python 写,使用时需要 Python 的环境以及安装 tinify 包,太多麻烦,然后看到 TinyPNG 官网有 Java 的 API 接口,就决定自己动手写一个 jar 封装这些麻烦,只需一个 jar 就能实现图片压缩。


准备工作

一、TinyPNG 申请 API_KEY,注意:每个 API_KEY 每个月只能压缩 500 张图片,当然你用多个邮箱申请多个 API_KEY,每次压缩的图片大小不能超过 5 M。

二、 拉取 TinyImg 工程,并用 IDEA 打开,定位到 TinyHelper.java
FC8dkDxbNVlJHL9JpmfCT0YzzRgVXZXT 替换你的 API_KEY,如下:

static {
    setKey("FC8dkDxbNVlJHL9JpmfCT0YzzRgVXZXT");
}

三、 菜单栏选择 Build -> Build Artifacts -> TinyImg.jar -> Build,生成的 tinyimg.jar 就可以直接用了,如下:
guide


如果想偷懒可以试试下面的方法:

  1. 直接下载已经构建好的 tinyimg.jar 文件,这个文件内置了一个 API_KEY,但不确定是否还有效,建议还是替换掉。
  2. 以压缩文件的方式打开,注意不要解压!!!找到里面的 com/ytempest/tinyimg/TinyHelper.class 文件,将这个文件解压出来
  3. 用 notepad++ 打开这个 class 文件【其他编辑器也可以,只要编码格式是 ANSI 就可以】,
    搜索FC8dkDxbNVlJHL9JpmfCT0YzzRgVXZXT,将其替换成你的 API_KEY 后保存
  4. tinyimg.jar 文件中原来的 TinyHelper.class 文件替换成我们修改后的 TinyHelper.class 文件,这样就可以直接使用了!!!

猜测:Java 源文件编译成 class 文件时字符串资源是不会被修改的,只是编码格式改变了,需要注意的是通过这种方式修改的字符串长度必须和源文件的字符串长度保持一致,否则会破坏 class 文件的运行


使用方法

一、环境

确保 JDK 环境,没有请自行安装配置


二、使用说明

脚本选项
选项参数说明示例
-h帮助手册java -jar tinyimg.jar
压缩当前文件夹下图片文件java -jar tinyyimg.jar
-kAPK_KEY从 TinyPNG 申请的 API_KEYjava -jar tinyimg.jar -k API_KYE
-i输入路径图片路路径或文件夹路径java -jar tinyimg.jar -i inputPath
-o输出路劲图片路径或文件夹路径java -jar tinyimg.jar -o outputPath
-r输入为文件夹时压缩文件夹下所有图片java -jar tinyimg.jar -r

使用示例
1、压缩单个图片文件:

示例:java -jar tinyimg.jar -i inputImgPath -o outputImgPath

说明:

  • inputImgPath:需要压缩的图像文件路径

  • outputImgPath:压缩后的图像输出路径【可选,不设置默认覆盖原文件】


2、压缩文件夹下的图片文件:

示例1:java -jar tinyimg.jar

说明:

  • 默认压缩当前目录下的图片文件,并覆盖原文件;
  • 如果你想压缩当前目录下的图片文件,并输出到指定目录,你可以用:
    java -jar tinyimg.jar -i . -o outputDirPath

示例2:java -jar tinyimg.jar -i inputDirPath -o outputDirPath

说明:

  • inputDirPath:需要压缩的图像文件夹

  • outputDirPath:压缩后的图像输出文件夹【可选,不设置默认覆盖原文件】


3、指定 TinyPNG 的 API_KEY

示例:java -jar tingyimg.jar -s FC8dkDxbNVlJHL9JpmfCT0YzzRgVXZXT


4、使用递归压缩文件夹下所有

示例:java -jar tinypng.jar -r


三、更新日志

  • v1.0 支持压缩单个图片文件和批量图片文件
  • v1.1 添加命令选项支持,完善流程
    • 支持指定 TinyPNG 的 API_KEY
    • 支持递归压缩文件夹下所有图片文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值