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

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

相关推荐
向前看-7 小时前
验证码机制
前端·后端
超爱吃士力架9 小时前
邀请逻辑
java·linux·后端
fantasy_arch9 小时前
CPU性能优化-磁盘空间和解析时间
网络·性能优化
AskHarries11 小时前
Spring Cloud OpenFeign快速入门demo
spring boot·后端
pubuzhixing11 小时前
开源白板新方案:Plait 同时支持 Angular 和 React 啦!
前端·开源·github
isolusion12 小时前
Springboot的创建方式
java·spring boot·后端
zjw_rp12 小时前
Spring-AOP
java·后端·spring·spring-aop
忆源12 小时前
3.3.2.3 开源项目有锁队列实现--魔兽世界tinityCore
开源
鹏大师运维12 小时前
聊聊开源的虚拟化平台--PVE
linux·开源·虚拟化·虚拟机·pve·存储·nfs
码农老起12 小时前
企业如何通过TDSQL实现高效数据库迁移与性能优化
数据库·性能优化