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

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

相关推荐
郑祎亦27 分钟前
Spring Boot 项目 myblog 整理
spring boot·后端·java-ee·maven·mybatis
本当迷ya40 分钟前
💖2025年不会Stream流被同事排挤了┭┮﹏┭┮(强烈建议实操)
后端·程序员
青云交2 小时前
大数据新视界 -- 大数据大厂之 Impala 性能优化:跨数据中心环境下的挑战与对策(上)(27 / 30)
大数据·性能优化·impala·案例分析·代码示例·跨数据中心·挑战对策
计算机毕设指导62 小时前
基于 SpringBoot 的作业管理系统【附源码】
java·vue.js·spring boot·后端·mysql·spring·intellij-idea
paopaokaka_luck2 小时前
[371]基于springboot的高校实习管理系统
java·spring boot·后端
捂月3 小时前
Spring Boot 深度解析:快速构建高效、现代化的 Web 应用程序
前端·spring boot·后端
瓜牛_gn3 小时前
依赖注入注解
java·后端·spring
Estar.Lee4 小时前
时间操作[取当前北京时间]免费API接口教程
android·网络·后端·网络协议·tcp/ip
喜欢猪猪4 小时前
Django:从入门到精通
后端·python·django
一个小坑货4 小时前
Cargo Rust 的包管理器
开发语言·后端·rust