java中用thumbnailator依赖写一个压缩图片的类,只要图片大小超过几兆就无限循环下去的详细代码实例?(经典)

下面是使用Thumbnailator依赖编写的一个压缩图片的类。该类会不断循环压缩图片,直到图片大小小于指定的阈值(以字节为单位)。

java Copy code
import net.coobird.thumbnailator.Thumbnails;

import java.io.File;
import java.io.IOException;

public class ImageCompressor {
    public static void compressImage(File inputFile, File outputFile, long maxSize) throws IOException {
        long fileSize = inputFile.length();

        while (fileSize > maxSize) {
            Thumbnails.of(inputFile)
                    .scale(0.8) // 缩放比例可根据需求调整
                    .toFile(outputFile);

            fileSize = outputFile.length();
            inputFile = outputFile; // 将输出文件作为输入文件继续压缩
        }
    }

    public static void main(String[] args) {
        try {
            File inputFile = new File("input.jpg"); // 输入图片路径
            File outputFile = new File("output.jpg"); // 输出图片路径
            long maxSize = 2 * 1024 * 1024; // 指定的最大文件大小(2兆字节)

            compressImage(inputFile, outputFile, maxSize);
            System.out.println("压缩完成!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
在上述代码中,我们使用Thumbnails.of()方法创建一个Thumbnailator对象,并使用.scale()方法指定缩放比例。然后使用.toFile()方法将压缩后的图片保存到指定的输出文件。接着,我们比较输出文件的大小是否超过了指定的阈值,如果超过了,则将输出文件作为输入文件继续进行压缩,直到达到指定的大小。

请确保已在项目中添加了Thumbnailator依赖,以便使用相关的类和方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/204918.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tap虚拟网卡

1 概述 Tap设备通常用于虚拟化场景下,其驱动代码位于drivers/net/tun.c,tap与tun复用大部分代码, 注:drivers/net/tap.c并不是tap设备的代码,而是macvtap和ipvtap; 下文中,我们统一称tap&#…

父子进程继承问题:OSError: [Errno 88] Socket operation on non-socket错误记录

目录 1 错误:self.server_address = self.socket.getsockname()OSError: [Errno 88] Socket operation on non-socket 2 错误排查过程 3 解决方法

java中用thumbnailator依赖写一个压缩图片的类,只要图片大小超过固定尺寸就无限循环下去的详细代码实例?

下面是使用thumbnailator依赖编写的一个压缩图片类的详细代码示例,该类会对大小超过固定尺寸的图片进行无限循环压缩。 java Copy code import net.coobird.thumbnailator.Thumbnails; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import…

四、分代垃圾回收机制及垃圾回收算法

学习垃圾回收的意义 Java 与 C等语言最大的技术区别:自动化的垃圾回收机制(GC) 为什么要了解 GC 和内存分配策略 1、面试需要 2、GC 对应用的性能是有影响的; 3、写代码有好处 栈:栈中的生命周期是跟随线程&…

重型堆垛机钢丝绳维护经验

钢丝绳是重型堆垛机一个非常重要的组成部分,平时我们给一些客户做堆垛机的维保,每次都会特地去检查堆垛机的钢丝绳,如果发现起毛刺,那必须得赶紧跟客户讲,让客户自己的维修人员不定期地观察,情况严重就要做…

CPU密集型和IO密集型对 CPU内核之间的关系

多线程如何合理的配置核心线程数? 对于 CPU 密集型任务,由于 CPU 密集型任务的性质,导致 CPU 的使用率很高,如果使用线程池中的核心线程数量过多,会增加上下文切换的次数,带来额外的开销。因此&#xff0c…

Python 日志(略讲)

日志操作 日志输出: # 输出日志信息 logging.debug("调试级别日志") logging.info("信息级别日志") logging.warning("警告级别日志") logging.error("错误级别日志") logging.critical("严重级别日志")级别设置…

Java程序员,你掌握了多线程吗?(文末送书)

目录 01、多线程对于Java的意义02、为什么Java工程师必须掌握多线程03、Java多线程使用方式04、如何学好Java多线程送书规则 摘要:互联网的每一个角落,无论是大型电商平台的秒杀活动,社交平台的实时消息推送,还是在线视频平台的流…

unity 2d 入门 飞翔小鸟 下坠功能且碰到地面要停止 刚体 胶囊碰撞器 (四)

1、实现对象要受重力 在对应的图层添加刚体 改成持续 2、设置胶囊碰撞器并设置水平方向 3、地面添加盒状碰撞器 运行则能看到小鸟下坠并落到地面上

Windows本地如何添加域名映射?(修改hosts文件)

1. DNS(域名系统) Domain Name System(域名系统):为了加快定位IP地址的速度, 将域名映射进行层层缓存的系统. 目的:互联网通过IP(10.223.146.45)定位浏览器建立连接,但是我们不易区别IP,为了方便用户辨识I…

柏睿网络分析:为什么微模块化机房越来越受欢迎?

与传统机房相比,微模块化机房的建设周期更短,扩展性更强,能耗更低,运维难度也相对较低。因此,微模块化机房是一种高效、灵活、节能的机房解决方案,适用于各种规模的数据中心。 一体化分布式部署&#xff1a…

idea利用SpringMVC框架整合ThymeLeaf

简洁一些:两个重要文件 1.controller指定html文件:我们访问http://localhost:8080/test package com.example.appledemo.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import o…

甘草书店:#9 2023年11月23日 星期四 「麦田创业历程分享1——联合创始人的魔幻相遇」

既然甘草是一家创业主题的书店咖啡馆,那就从我,从麦田开始分享一下创业历程吧。 需要声明的是,我从不认为我有资格对别人的创业指指点点,每位创业者的性格、背景、基础、诉求各有不同,时代发展也日新月异,…

netty07-粘包半包以及解决方案

粘包指的是发送方在发送数据时,多个数据包被合并成一个大的数据包发送到接收方,接收方在接收时无法准确地区分各个数据包的边界,从而导致数据粘在一起。 半包指的是发送方发送的数据包被拆分成了多个小的数据包,在接收方接收时&a…

springboot中优雅实现异常拦截和返回统一结构数据

做前后端分离的项目,为了方便前端处理数据,都会将返回的数据封装到统一的结构下,这样前端拿到数据可以根据指定的字段做不同的业务逻辑处理。 1、异常信息统一拦截 项目开发中,难免会发生异常,如果不做拦截&#xff…

Vue的Nuxt项目部署在服务器,pm2动态部署和npm run build静态部署

Nuxt项目的部署有两种方式,一种是静态部署,一种是动态部署 静态部署需要关闭项目的ssr功能,动态部署则不需关闭,所以怎么部署项目就看你用不用ssr功能了 。 1.静态部署 先说静态部署,很简单,只需要在nuxt…

【C语言】程序设计加密解密

🚩write in front🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评百大博…

对目前想法有帮助的论文

《Enabling DeepSpikingNeuralNetworks with Hybrid conversion and SpikeTimingDependent Backpropagation》 - 知乎

黛姿秘语,匠心之作,严谨工艺铸就完美肌肤

在喧嚣的都市中,我们每个人都渴望找到一款可以信赖长期使用的护肤品,让匹配的肌肤重新焕发光彩,找到更加年轻的自己,但是目前市面上的产品让人眼花缭乱,作为普通的消费者,无法去辨别什么产品好,…

idea连接Hbase卡住,没有输出

1.项目场景 (idea连接hbase) 先检查hadoop,zookeeper,hbase启动没有 idea连接hbase,创建命名空间,idea一直卡住在日志,没有输出 package com.wf.hbase;import org.apache.hadoop.hbase.NamespaceDescriptor; import org.apache.…