Java:使用thumbnailator实现图片压缩处理

简介: Java:使用thumbnailator实现图片压缩处理

thumbnailator可以实现图片的压缩、旋转、添加水印

文档

依赖

<!-- https://mvnrepository.com/artifact/net.coobird/thumbnailator -->
<dependency>
    <groupId>net.coobird</groupId>
    <artifactId>thumbnailator</artifactId>
    <version>0.4.17</version>
</dependency>

代码示例

压缩图片大小

package com.example.demo;
import net.coobird.thumbnailator.Thumbnails;
import java.io.IOException;
public class Demo {
    public static void main(String[] args) throws IOException {
        Thumbnails.of("img/image.jpg")
                .outputQuality(0.5f)
                .toFile("img/image-out.jpg");
    }
}

图片处理前后大小对比

267K image.jpg
140K image-out.jpg

参考


相关文章
|
11月前
|
Java BI 图形学
java实现图片压缩功能
java实现图片压缩功能
421 0
|
Java Maven 数据安全/隐私保护
写给大忙人看的 - Java中图片压缩上传至MinIO服务器(4)
之前文章已经介绍了 MinIO 的环境搭建,已经对文件的上传下载方法,本篇文章一起与大家来学习图片压缩上传的方法
1152 1
写给大忙人看的 - Java中图片压缩上传至MinIO服务器(4)
|
Java
java图片压缩工具类
java图片压缩工具类
997 0
|
存储 Java API
【Android 内存优化】Android 原生 API 图片压缩原理 ( 图片质量压缩方法 | 查找 Java 源码中的 native 方法对应的 C++ 源码 )
【Android 内存优化】Android 原生 API 图片压缩原理 ( 图片质量压缩方法 | 查找 Java 源码中的 native 方法对应的 C++ 源码 )
218 0
【Android 内存优化】Android 原生 API 图片压缩原理 ( 图片质量压缩方法 | 查找 Java 源码中的 native 方法对应的 C++ 源码 )
|
Java 数据安全/隐私保护
|
Java 关系型数据库 .NET
在windows和Linux上安装ImageMagick与jmagick,Maven配置、Java图片压缩代码(整理网上、结合自己情况、编写出来的新安装方式)
安装过程(如图所示)   若想使用imagemagick,需要安装各种依赖库、一步小心,可能就会安装错误。其中ImageMagick的访问地址为: http://www.imagemagick.org/script/index.php 2、安装支持库 Linux服务器如果没有安装Jpeg v6b、libPng、FreeType库,要在安装imagemagick之前先装好,否则imagemagi
3116 0
|
Java 数据安全/隐私保护
Java后端实现图片压缩技术
今天来说说图片压缩技术,为什么要使用图片压缩,图片上传不就完事了吗?对的,这在几年前可以这么说,因为几年前还没有现在这么大的并发,也没有现在这么关注性能。   如今手机很多,很多人都是通过手机访问网络或者app,再调用接口的时候肯定会多多少少的浏览图片,尤其是脱离wifi的情况下,可以看到很多软件展示都会展示小图,这个小图就是压缩的图片,点击后才会放大,如下: 这样的做法可以尽量减少手机端的图片展示压力,因为一个图片对于上传者来说可能是几百K,也有可能是几兆,这样对于手机端无遗展现的压力会比较大,同时也会耗费很多流量,所以在如今手机互联网当道的情况下一定要做好这样的图片压缩处理。
1888 0
|
Java Windows iOS开发
Java 图片压缩
先上传压缩后的效果图一张: 图片1是压缩前,2是压缩后,这是以最大压缩比压缩的,效果只有自己去看了。 package zhangao.main; import java.
1296 0
|
4天前
|
安全 Java UED
Java中的多线程编程:从基础到实践
本文深入探讨了Java中的多线程编程,包括线程的创建、生命周期管理以及同步机制。通过实例展示了如何使用Thread类和Runnable接口来创建线程,讨论了线程安全问题及解决策略,如使用synchronized关键字和ReentrantLock类。文章还涵盖了线程间通信的方式,包括wait()、notify()和notifyAll()方法,以及如何避免死锁。此外,还介绍了高级并发工具如CountDownLatch和CyclicBarrier的使用方法。通过综合运用这些技术,可以有效提高多线程程序的性能和可靠性。