今天碰到项目有客户出现这个错误, 测试网也有, 但是有时候就没有, 很奇怪的问题。 查下了是JDK 的一个BUG。
BUG 地址: http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6404011
大概意思是读取图片流的时候, 如果图片本身格式有问题, 他就会报 Invalid icc profile 错误。官网说是1.6已经修复了, 但是我已经是1.6 版本了, 没搞明白怎么回事。
然后找到一篇帖子说重写image可以解决。 参考地址:http://feicer.iteye.com/blog/803138#bc2345723
类似
File doc = new File(file);
FileInputStream inFile = new FileInputStream(doc);
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(inFile);
BufferedImage image = decoder.decodeAsBufferedImage();
FileOutputStream outFile = new FileOutputStream(doc);
ImageIO.write(image, ‘JPEG’, outFile);
inFile.close();
outFile.close();
BufferedImage srcImage = ImageIO.read(doc);
// do Something (例如缩小图片)