BufferedImage image = ImageIO.read(new ByteArrayInputStream(tempImage.getTextObj()));
如果读取的jpg文件有边框 就会出现以下异常。java.awt.color.CMMException: General CMM error517
at sun.awt.color.CMM.checkStatus(CMM.java:127)
at sun.awt.color.ICC_Transform.<init>(ICC_Transform.java:89)
at java.awt.image.ColorConvertOp.filter(ColorConvertOp.java:493)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.acceptPixels(JPEGImageReader.java:1081)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1049)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:864)
at javax.imageio.ImageIO.read(ImageIO.java:1400)
at javax.imageio.ImageIO.read(ImageIO.java:1322)
at org.apache.jsp.html.portlet.enterprise_005fadmin.edit_005fuser_005fportrait_jsp._jspService(edit_005fuser_005fportrait_jsp.java:592)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)

解决方案 »

  1.   

    以2进制读取图片的时候,它可不管有没有什么边框不边框的.都应该是可以的,你这里报错估计是tempImage.getTextObj();你这句闹的
      

  2.   

    不是的 debug出来tempImage.getTextObj()是有数据的 
      

  3.   

    JDK的ImageIO对jpeg的图片支持不好,最好用SUN的Jimi,并且它速度比ImageIO要快几十倍
      

  4.   

    tempImage.getTextObj()有数据并不能说明你的数据格式是对的.