图片压缩-开源还是商业软件

1. 背景

个人站性能优化提高首开率,同时要求文章能快速打开,因为一篇文章可能使用很多图片,因此图片压缩必不可少。

2. 初步筛选

谷歌搜索"图片压缩",不少推荐这个软件:

tinify.cn/

但是正式版价格太贵,39欧元的年费,折合人名币大约307元/年。

于是想到X宝,有专门搞软件破解的,价格实惠,不过这次比想象中的贵:

一般商业软件20块左右基本能拿下,这个虽然比tinify便宜,但算下来也要100出头,而且是年费。

接着找开源,找到了:github.com/coobird/thu...

官网介绍主要是做缩略图,水印,但也能压缩图片,先试试吧。

3. 选型之路

3.1 试用thumbnailator

3.1.1 代码

引入maven依赖,本次尽量使用高版本,以解决已知bug:

java 复制代码
        <dependency>
            <groupId>net.coobird</groupId>
            <artifactId>thumbnailator</artifactId>
            <version>0.4.20</version>
        </dependency>

网上拷贝代码改改:

java 复制代码
public class CompressionUtil {
    public static void compress(String sourceFilePath, String outputFilePath) throws IOException {
        BufferedImage sourceImage = ImageIO.read(new FileInputStream(sourceFilePath));
        Thumbnails.of(sourceImage).size(sourceImage.getWidth(), sourceImage.getHeight()).keepAspectRatio(false)
                .outputFormat(getExtensionName(sourceFilePath)).toFile(outputFilePath);
    }

    private static String getExtensionName(String filePath) {
        int length = filePath.length();
        return filePath.substring(length - 3, length);
    }
}

3.1.2 压缩结果对比

可以看到,不少图片压缩比接近50%,还有一部分压缩比较低,但还有越压越大的,虽然在网上也看到过文件会越压越大,本指望最新版本能解决,看到这个结果还是有点惊讶。

文件越压越大的分析:www.51cto.com/article/753...

我相信尝试各种方法做优化,调整参数,结果可能会好些,不过没有官方指导,要适配各种场景都能得到一个较好的结果,难度可能有点大,而且大概率也会很耗时,暂时挂起,看看其他软件的表现。

3.2 试用X宝tinypng

此X宝商家贴了tinify的熊猫吃竹子图片做宣传,特意问了是不是tinify正版,回复集成了tinify,就先当是正版吧。

试用版有一天使用期,工具使用比较简单,可以指定压缩文件目录,拖动图片目录到指定区域则可:

压缩结果对比:

看起来压缩比更高,很多远超50%,也没有出现越压越大的现象,再比较下和开源工具thumbnailator的压缩结果:

多数图片的压缩比都高于开源工具thumbnailator,只有一个低于它。

目前大致觉得该软件还是有点靠谱,此时想起来如果图片加水印后会有啥影响:

从结果看,加水印居然还能自动压缩,保险起见,先加水印,再用X宝工具压缩:

可见虽然加水印起到了压缩作用,工具还能进一步压缩。

本来X宝工具基本可以作为备选,不过在这次压水印图片过程中,最后两张图片等了很长时间没有结果,以致我以为出错了,因为操作界面就提到有失败率。

不希望今后要去挑失败的图片重压,所以我又试了tinify。

3.3 试用tinify

年费307.52,对于当下月入2280.22的我来说着实是一笔庞大开销,不过要实现个人站性能优化目标,图片压缩绕不过去,X宝工具那个长时间停顿有点不放心(虽然等我买完tinify,写此文时最后两张图片也出结果了)。

收费的pro版界面:

压缩后的文件和X宝工具对比:

可以看到压缩比进一步提升。

3.4 效果对比

找两组图片比较一下。

3.4.1 第一组

组件局部注册后.png

压缩工具 大小
源图 78.4 KB
tinify 23.3 KB
X宝工具 54.7 KB
thumbnailator 65.3 KB

● 源图

● tinify

● X宝工具

● thumbnailator

3.4.2 第二组

全局注册时延.png

压缩工具 大小
源图 61.6 KB
tinify 16.7 KB
X宝工具 40.3 KB
thumbnailator 31.7 KB

● 源图

● tinify

● X宝工具

● thumbnailator

4. 总结

● thumbnailator

本次试用后排除,其存在的压缩后文件变大问题,未必一定不能优化,只是不想耗费过多精力在上面,主要是官方并没有看到明确指导,而且默认压缩比也不是最优。

● X宝工具

实际还可以继续深度评估,毕竟比tinify便宜接近2/3,虽然本次验证压缩比没有tinify高,压缩质量也不突出,但界面上还有不少参数可调整,未必就不能有好结果。(试用版不能选择参数,不知道是否隔日导致,未超过24小时)

如果第2次压缩过程中间没有长时间等待导致误以为出错,很有可能就选它了,这也说明产品设计很重要,要让客户明确知道程序在正常运行。

● tinify

尚没有频繁操作,目前的体验还可以,有限操作过程中没有发现明显问题,默认压缩比也高,压缩图片清晰度可接受,且年费已付,先用起来吧。

注:本文不构成最终选型建议,不同的应用场景如自媒体,对图片质量的要求也不同,即使同是个人站,要求也可能不同。


其他阅读:

如何编写软件设计文档
Spring Cache架构、机制及使用
布隆过滤器适配Spring Cache及问题与解决策略
JAVA编程思想(一)通过依赖注入增加扩展性
JAVA编程思想(二)如何面向接口编程
JAVA编程思想(三)去掉别扭的if,自注册策略模式优雅满足开闭原则
Java编程思想(七)使用组合和继承的场景
JAVA基础(一)简单、透彻理解内部类和静态内部类
JAVA基础(二)内存优化-使用Java引用做缓存
JAVA基础(三)ClassLoader实现热加载
JAVA基础(五)函数式接口-复用,解耦之利刃

相关推荐
uzong2 小时前
技术故障复盘模版
后端
GetcharZp2 小时前
基于 Dify + 通义千问的多模态大模型 搭建发票识别 Agent
后端·llm·agent
桦说编程2 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
IT毕设实战小研2 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
wyiyiyi3 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
阿华的代码王国4 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Jimmy4 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
Jerry说前后端4 小时前
RecyclerView 性能优化:从原理到实践的深度优化方案
android·前端·性能优化
AntBlack4 小时前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则
后端·python·pyqt
bobz9655 小时前
pip install 已经不再安全
后端