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

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基础(五)函数式接口-复用,解耦之利刃

相关推荐
paopaokaka_luck3 小时前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计
热爱跑步的恒川3 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
码农小旋风5 小时前
详解K8S--声明式API
后端
Peter_chq5 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
Yaml45 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~5 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616885 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端
前端青山6 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js
睡觉谁叫~~~6 小时前
一文解秘Rust如何与Java互操作
java·开发语言·后端·rust
ClkLog-开源埋点用户分析7 小时前
ClkLog企业版(CDP)预售开启,更有鸿蒙SDK前来助力
华为·开源·开源软件·harmonyos