`
iaiai
  • 浏览: 2145085 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type

    博客分类:
  • J2EE
 
阅读更多
用java处理图片的时候,ImageIO读jpg的时候出现exception:bandOffsets.length is wrong。我也遇到过,最终也解决啦,把成果跟大家分享。

原因可能是JPEG图片的ICC信息可能已经被破坏了,所以ImageIO会抛出异常

解决办法:

BufferedImage bis = null;
   try{
       bis = ImageIO.read(file);
       bis.getWidth();
       bis.getHeight();
   }catch(Exception e){
    try
    {
     ThumbnailConvert tc = new ThumbnailConvert();
     tc.setCMYK_COMMAND(file.getPath());
     Image image =null;
     image = Toolkit.getDefaultToolkit().getImage(file.getPath());
       MediaTracker mediaTracker = new MediaTracker(new Container());
     mediaTracker.addImage(image, 0);
     mediaTracker.waitForID(0);
      image.getWidth(null);
     image.getHeight(null);
    }catch (Exception e1){
     e1.printStackTrace();
    }
   }

这两句代码,是处理cmyk类型的图片,需要ImageMagick的支持

ThumbnailConvert tc = new ThumbnailConvert();
     tc.setCMYK_COMMAND(file.getPath());//用于把cmyk转成rgb

ImageMagick的具体指令是:mogrify -colorspace RGB -quality 100 file1


ThumbnailConvert.java
private String CMYK_COMMAND = "mogrify -colorspace RGB -quality 80 file1";//转换cmyk格式   
  
public void setCMYK_COMMAND(String file1) {   
exeCommand(CMYK_COMMAND.replace("file1", file1));   
}   
  
public boolean exeCommand(String cmd){   
InputStreamReader ir = null;   
LineNumberReader input = null;   
try   
{   
//linux下java执行指令:Runtime.getRuntime().exec (String str);   
Process process = Runtime.getRuntime().exec (cmd);   
ir=new InputStreamReader(process.getInputStream());   
input = new LineNumberReader (ir);   
while ((input.readLine ()) != null){   
}   
ir.close();   
input.close();   
}   
catch (java.io.IOException e){   
System.err.println ("IOException " + e.getMessage());   
return false;   
}   
return true;   
}   
分享到:
评论
6 楼 hp321 2015-08-24  
Windows该命令是不是需要安装什么软件才可以?我试过不行(Windows下)
5 楼 hp321 2015-08-24  
Chenzh_758 写道
其实直接用一下代码就可以解决了:
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(new FileInputStream( new File("e://1.jpg") ) );
BufferedImage sourceImg = decoder.decodeAsBufferedImage();



失真很严重
4 楼 xiefeng0211 2014-11-07  
】】】】】】
3 楼 xiefeng0211 2014-11-07  
00000
2 楼 hw1287789687 2014-10-20  
C:\Users\Administrator>mogrify -colorspace RGB -quality 100 "D:\software\eclipse
\workspace2\demo_channel_terminal\src\main\resources\mini.jpg"

C:\Users\Administrator>
1 楼 Chenzh_758 2014-07-15  
其实直接用一下代码就可以解决了:
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(new FileInputStream( new File("e://1.jpg") ) );
BufferedImage sourceImg = decoder.decodeAsBufferedImage();

相关推荐

    图片处理 javax.imageio.IIOException: Unsupported Image Type

    NULL 博文链接:https://zhangmingji.iteye.com/blog/1969693

    javax.imageio-1.0.5.jar

    javax.imageio-1.0.5.jar, java处理图片的库。 从maven中央仓库下载的。实测可用。

    Exception in thread “main” javax.imageio.IIOException: Can’t read input file!

    Exception in thread “main” javax.imageio.IIOException: Can’t read input file!:无法读取输入文件! 原可以从两个方面分析: 路径中文乱码问题 target/classes文件夹中并没有找到图片 加粗样式看下代码: ...

    imageio-core-3.1.1-API文档-中文版.zip

    赠送jar包:imageio-core-3.1.1.jar; 赠送原API文档:imageio-core-3.1.1-javadoc.jar; 赠送源代码:imageio-core-3.1.1-sources.jar; 赠送Maven依赖信息文件:imageio-core-3.1.1.pom; 包含翻译后的API文档:...

    jai-imageio-core-1.4.0-API文档-中英对照版.zip

    赠送jar包:jai-imageio-core-1.4.0.jar; 赠送原API文档:jai-imageio-core-1.4.0-javadoc.jar; 赠送源代码:jai-imageio-core-1.4.0-sources.jar; 赠送Maven依赖信息文件:jai-imageio-core-1.4.0.pom; 包含...

    jai-imageio-core:JAI ImageIO Core(无javax.media.jai依赖项)

    与原始的jai-imageio-core不同,该项目被称为“独立”,它删除了对jai-core软件包( javax.media.jai )和JPEG 2000( jj2000 )的jj2000 。 该版本也不包括libJIIO的C实现,这意味着该版本是平台独立的,并且根据...

    tesseract识别中文的com.sun.media.imageio.plugins.tiff.TIFFImageWriteParam下载

    com.sun.media.imageio.plugins.tiff.TIFFImageWritePar 报错,很多同学找不到 这个jai_imageio-1.1-alpha.jar 提供下下载

    eci_offset_2009.zip

    可解决JAVA读取图片异常javax.imageio.IIOException: Unsupported Image Type。 解决ps编辑的图片或本身图片格式是cmyk格式,java.awt包无法读取问题。 官方下载的压缩包。 里面有说明文档和icc文件。如:ISOcoated_...

    jai-core-1.1.3.jar jai-imageio.jar jai-codec-1.1.3.jar

    3个jar包: jai_core-1.1.3.jar jai_imageio.jar jai-codec-1.1.3.jar

    jai-imageio-core-1.4.0-API文档-中文版.zip

    赠送jar包:jai-imageio-core-1.4.0.jar; 赠送原API文档:jai-imageio-core-1.4.0-javadoc.jar; 赠送源代码:jai-imageio-core-1.4.0-sources.jar; 赠送Maven依赖信息文件:jai-imageio-core-1.4.0.pom; 包含...

    imageio-2.3.0-py2.py3-none-any.whl

    imageio 2.3.0版本,下载到本地进行安装,直接pip安装可能因为下载文件速度太慢而报错。安装方法:1.打开cmd 2.安装whl文件,pip install imageio-2.3.0-py2.py3-none-any.whl(依赖会自行安装,下载速度还可以)

    java SE API

    javax.imageio.plugins.jpeg javax.imageio.spi javax.imageio.stream javax.management javax.management.loading javax.management.modelmbean javax.management.monitor javax.management.openmbean ...

    Javase-6.0_中文API_HTML(最新更新)

    javax.imageio.plugins.jpeg javax.imageio.spi javax.imageio.stream javax.jws javax.jws.soap javax.lang.model javax.lang.model.element javax.lang.model.type javax.lang.model.util javax....

    imageio-core-3.1.1-API文档-中英对照版.zip

    赠送jar包:imageio-core-3.1.1.jar; 赠送原API文档:imageio-core-3.1.1-javadoc.jar; 赠送源代码:imageio-core-3.1.1-sources.jar; 赠送Maven依赖信息文件:imageio-core-3.1.1.pom; 包含翻译后的API文档:...

    jdk 中文版

    javax.imageio.plugins.jpeg javax.imageio.spi javax.imageio.stream javax.jws javax.jws.soap javax.lang.model javax.lang.model.element javax.lang.model.type javax.lang.model.util javax....

    jai_codec.1.1.3 、jai_code.1.1.3 包下载

    jai_codec-1.1.3_jai_core-1.1.3 下载完成后 按照目录直接放到本地maven仓库中即可

    imageio-psd-3.1.1-API文档-中文版.zip

    赠送jar包:imageio-psd-3.1.1.jar; 赠送原API文档:imageio-psd-3.1.1-javadoc.jar; 赠送源代码:imageio-psd-3.1.1-sources.jar; 赠送Maven依赖信息文件:imageio-psd-3.1.1.pom; 包含翻译后的API文档:...

    imageio-tiff-3.1.1-API文档-中英对照版.zip

    赠送jar包:imageio-tiff-3.1.1.jar; 赠送原API文档:imageio-tiff-3.1.1-javadoc.jar; 赠送源代码:imageio-tiff-3.1.1-sources.jar; 赠送Maven依赖信息文件:imageio-tiff-3.1.1.pom; 包含翻译后的API文档:...

    imageio-bmp-3.1.1-API文档-中文版.zip

    赠送jar包:imageio-bmp-3.1.1.jar; 赠送原API文档:imageio-bmp-3.1.1-javadoc.jar; 赠送源代码:imageio-bmp-3.1.1-sources.jar; 赠送Maven依赖信息文件:imageio-bmp-3.1.1.pom; 包含翻译后的API文档:...

    [Java参考文档].JDK_API 1.6

    javax.imageio.spi 包含用于 reader、writer、transcoder 和流的插件接口以及一个运行时注册表的 Java Image I/O API 包。 javax.imageio.stream Java Image I/O API 的一个包,用来处理从文件和流中产生的低级别 I/...

Global site tag (gtag.js) - Google Analytics