Thumbnails 压缩图片

先了解一下png,jpg是什么;

png:png(便携式网络图形)是一种无损压缩的位图片形格式
jpg,jpge 是有损压缩的图片形式,会产生迭代有损,在重复压缩和解码的过程中会不断丢失信息使图像质量下降。

使用Thumbnails压缩图片的话,
输出png格式图片建议调整scale的值压缩图片分辨率,
输出jpg 图片建议调整outputFormat的值压缩图片质量


下面进行一个简单测试:

找一个测试图片,下图大小为7.41MB
6358f315220c7fab45f763b3ea2281017f8f6a5c   7763102eac2974bb4f01888ece5b9ac42f5b8ff2

Maven引入压缩jar包
<dependency>
    <groupId>net.coobird</groupId>
    <artifactId>thumbnailator</artifactId>
    <version>0.4.8</version>
</dependency>

以下是Java代码

public static void main(String[] args) {

    File file = new File("C:/Users/Administrator/Desktop/test/test.jpg");

    try {
        BigDecimal bigDecimal = new BigDecimal("1");

        for (int i = 0; i <= 9; i++) {

            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            Thumbnails.of(file).scale(1f).outputFormat("jpg")
                .outputQuality(bigDecimal.doubleValue()).toOutputStream(baos);
            byte[] byteArray = baos.toByteArray();

            OutputStream os = new FileOutputStream("C:/Users/Administrator/Desktop/test/test"+                                           bigDecimal +".jpg");
            os.write(byteArray, 0, byteArray.length);
            os.flush();
            os.close();

            bigDecimal = bigDecimal.subtract(new BigDecimal("0.1"));
        }

    } catch (IOException e) {
        e.printStackTrace();
    }

}

执行以后,生成以下图片:
随着outputQuality的值减小,生成的图片也越来越小
19ce2ad1b2e8bfd68bdd3cac5370c44fc8e0ffbd
但是我们查看test0.1.jpg的属性,只是大小改变,分辨率并未改变
a8de3027c09dd4c8a1483870f07d60e74906953f  600c8beb0503cbeca8f1c4aa31acd054586ef361

追求质量大小的话,建议输出jpg格式图片,
优点:压缩最小且清晰
缺点:图片色彩易淡化

猜你喜欢

转载自yq.aliyun.com/articles/675395
今日推荐