gpt4 book ai didi

java - Java 中可以进行极端图像优化吗?

转载 作者:行者123 更新时间:2023-12-02 18:05:37 25 4
gpt4 key购买 nike

我正在尝试用Java编写一个图像优化软件。第一个也是最明显的步骤是剥离 EXIF 元数据,我已经成功完成了。我还尝试使用 ImageIO 压缩图像,压缩质量参数如下:

filepath=chosen.getCanonicalPath()+"-temp.jpg";
file=new File(filepath);
Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("jpg");
if (!writers.hasNext()){
throw new IllegalStateException("No writers found");
}
OutputStream os = new FileOutputStream(file);
ImageWriter writer = (ImageWriter) writers.next();
ImageOutputStream ios = ImageIO.createImageOutputStream(os);
writer.setOutput(ios);

ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(0.9f);
writer.write(null, new IIOImage(optimized, null, null), param);

但是,这确实不太有效。当源图像是不同格式(即不是 jpeg)时,它的工作原理还不错,但是当从 jpeg 压缩到 jpeg 时,有时甚至会使文件大小更大

像 www.tinyjpg.com 这样的网站声称(并且确实)将 jpeg 图像的文件大小减少了 40%-60%,并且没有质量损失 。他们到底是如何做到这一点的(程序上和程序上)?他们要删除哪些类型的数据?如何在不造成质量损失的情况下删除这些数据?这是我可以用 Java 实现的吗?

非常感谢您能给我的任何指导和/或资源!

最佳答案

有一个开源库可以实现无损 JPEG 优化。它称为 SlimJPG,您可以在此处找到更多信息: https://github.com/Fewlaps/slim-jpg

要使用它,只需这样调用即可:

SlimJpg.file(yourImage).optimize();

yourImage 可以是 byte[]InputStreamFile

免责声明:我是委员会成员之一...:·)

关于java - Java 中可以进行极端图像优化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34821092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com