Java循环压缩图片到指定大小,但是文件大小没有变化

自由之翼Sai 2021-05-05 02:25:37
while(toFilePth.length() > config.SIZE) {
Thumbnails.of(toFilePth).scale(1f).outputQuality(0.6f).outputFormat("jpg").toFile(toFilePth);
}


如上,使用Thumbnails库循环压缩图片,循环第一次文件Size变小了,但是第二次之后文件Size就没有变化了,请问各位大佬这有可能是什么原因导致的?如何解决呢?
...全文
611 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
儿歌学编程 2021-11-18
  • 打赏
  • 举报
回复

我也遇到了,使用scale(1)的话只有第一次有明显的效果,后面就不行了。
后来用了size(),每次都把上一次图片的宽高根据quality缩小

maradona1984 2021-05-10
  • 打赏
  • 举报
回复
压缩第二次可能都没啥效果了,当然你的问题可能是别的
冰思雨 2021-05-10
  • 打赏
  • 举报
回复
引用 楼主 自由之翼Sai 的回复:
while(toFilePth.length() > config.SIZE) {
    Thumbnails.of(toFilePth).scale(1f).outputQuality(0.6f).outputFormat("jpg").toFile(toFilePth);
}
如上,使用Thumbnails库循环压缩图片,循环第一次文件Size变小了,但是第二次之后文件Size就没有变化了,请问各位大佬这有可能是什么原因导致的?如何解决呢?
楼主啊,可否每次都生成新的文件啊, 同一个文件进行读写,很容易出问题,因为 Java 底层都有数据缓存的。楼主可以试试每次都生成一个新的压缩文件。
自由之翼Sai 2021-05-10
  • 打赏
  • 举报
回复
引用 4 楼 maradona1984 的回复:
压缩第二次可能都没啥效果了,当然你的问题可能是别的
反正是到知识盲区了
自由之翼Sai 2021-05-10
  • 打赏
  • 举报
回复
引用 3 楼 冰思雨 的回复:
[quote=引用 楼主 自由之翼Sai 的回复:]
while(toFilePth.length() > config.SIZE) {
    Thumbnails.of(toFilePth).scale(1f).outputQuality(0.6f).outputFormat("jpg").toFile(toFilePth);
}
如上,使用Thumbnails库循环压缩图片,循环第一次文件Size变小了,但是第二次之后文件Size就没有变化了,请问各位大佬这有可能是什么原因导致的?如何解决呢?
楼主啊,可否每次都生成新的文件啊, 同一个文件进行读写,很容易出问题,因为 Java 底层都有数据缓存的。楼主可以试试每次都生成一个新的压缩文件。[/quote] 你好,这个我尝试过了,第一次循环生成压缩后的C文件,第二次循环读取C文件然后压缩生成新的D文件,但还是不行,改成循环操作图片IO流而不是操作图片文件就好了,这样只用读取和写入一次文件
自由之翼Sai 2021-05-10
  • 打赏
  • 举报
回复
引用 1 楼 qybao 的回复:
可以从以下方面调查一下 首先,要弄清楚,同一文件循环处理,是否保证是在上次处理完之后再开始下一次处理?也就是thumbnails压缩是同步还是异步?(看看文档里怎么说明的) 其次,读入文件的格式是否支持jpg,因为第一次循环结束后文件已经变为jpg格式了。 第三,处理中是否发生了异常而中止循环?
谢谢你的建议,第一点,文档都是关于函数使用方面的,存储相关的介绍我没找到,所以放弃了,第二点,这个是支持jpg格式的,不是格式导致的错误,第三点,执行过程中没有发生错误。 为什么有这个问题我还是不清楚,每循环一次图片文件的操作时间都会更新,不像是内存里的缓存导致的,我最后使用thumbnails操作图片IO流压缩,只持久化一次把问题解决了
qybao 2021-05-06
  • 打赏
  • 举报
回复
可以从以下方面调查一下 首先,要弄清楚,同一文件循环处理,是否保证是在上次处理完之后再开始下一次处理?也就是thumbnails压缩是同步还是异步?(看看文档里怎么说明的) 其次,读入文件的格式是否支持jpg,因为第一次循环结束后文件已经变为jpg格式了。 第三,处理中是否发生了异常而中止循环?
韩_师兄 2021-05-06
  • 打赏
  • 举报
回复
引用 1 楼 qybao 的回复:
可以从以下方面调查一下 首先,要弄清楚,同一文件循环处理,是否保证是在上次处理完之后再开始下一次处理?也就是thumbnails压缩是同步还是异步?(看看文档里怎么说明的) 其次,读入文件的格式是否支持jpg,因为第一次循环结束后文件已经变为jpg格式了。 第三,处理中是否发生了异常而中止循环?
详细.学习了

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧