【发布时间】:2014-09-09 06:02:42
【问题描述】:
我有一个用 Java 编写的 Spring MVC webapp,你也可以上传图片。这些图像需要进行处理(调整大小、裁剪等),我为此使用了 Scalr 库,这需要从 BufferedImage 中读取图像。
在 Java 中,您可以非常轻松地将 InputStream(这是图像的输入方式)转换为 BufferedImage:
final BufferedImage img = ImageIO.read(in);
但是,ImageIO 对图像格式确实很挑剔,如果图像有问题,就会抛出各种异常。用户可以将几乎任何质量的图像上传到网络应用程序,因此这是不可接受的。
所以我正在寻找替代方案。我做了一些谷歌搜索,其中一个建议是 Oracle 的 Java Advanced Imaging。唯一的问题是它似乎依赖于 Oracle Java 实现,而我没有使用它。
我可以使用其他库吗?
【问题讨论】:
-
好奇,为什么图像质量会影响
ImageIO阅读它的能力...唯一明显的错误是格式不兼容或格式错误(缺少资源)。我想几乎任何图书馆都会遇到这些错误的问题......由于“质量差”,ImageIO从来没有遇到过问题 -
我可能没有正确使用“质量”这个词。我目前遇到的特殊异常是“javax.imageio.IIOException:不兼容的颜色转换”。但是图像在浏览器中显示正常。
-
这是什么类型的图片?
-
看看this previous answer 的一些想法...和this example
标签: java image javax.imageio