问题描述
在使用Java的BufferedImage处理图片的时候,需要使用ImageIO读入图片文件:
BufferedImage bufferedImage = ImageIO.read(new File("/path/to/image.jpg"));
发现就最开始读入的时候,报错:
Exception in thread "main" javax.imageio.IIOException: Unsupported Image Type at java.desktop/com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1156) at java.desktop/com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:1127) at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1470) at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1317)
解决办法
原因是原生的Java代码遇到某些jpg或者其他格式,还会有不支持的格式,解决办法是使用github上开源的Java处理Image的扩展包:https://github.com/haraldk/TwelveMonkeys
使用的时候,只要引入对应的依赖即可,原来的Java代码都不需要修改,ImageIO会自动加载并进行适配,相当于加载插件的形式。
例如处理jpg的对应依赖:pom.xml:
<dependency> <groupId>com.twelvemonkeys.imageio</groupId> <artifactId>imageio-jpeg</artifactId> <version>3.8.2</version> </dependency>
其他格式的如下:
<dependency> <groupId>com.twelvemonkeys.imageio</groupId> <artifactId>imageio-bmp</artifactId> <version>3.8.2</version> </dependency> <dependency> <groupId>com.twelvemonkeys.imageio</groupId> <artifactId>imageio-tiff</artifactId> <version>3.8.2</version> </dependency>
更多plugin请参考TwelveMonkeys的文档
文章评论