图片后重写,图片蒙上一层红色的解决办法(上)"/>
ImageIO.read()方法读取图片后重写,图片蒙上一层红色的解决办法(上)
1.在项目中为了处理用户上传的图片,会对图片进行重写处理,故使用了类似下面的代码:
File src = new File("e:/img/google.jpg");BufferedImage bi = (BufferedImage)ImageIO.read(src);BufferedImage bi_scale = new BufferedImage(bi.getWidth(), bi.getHeight(), BufferedImage.TYPE_INT_RGB );Graphics2D g = bi_scale.createGraphics();g.drawImage( bi, 0, 0, bi.getWidth(), bi.getHeight(), null );g.dispose();FileOutputStream fos = new FileOutputStream("e:/img/google2.jpg");ImageIO.write(bi_scale, "jpg", fos);fos.close();
原图如下:
但发现对于CMYK模式的图片ImageIO.read方法在读取时,会丢失掉ICC信息,从面导致重写后的图片上面蒙受上一层红色如下:
显然对图片质量的影响非常大,在用户体验非常高的互联网上是没法让用户接受的,于是又改用另外一种获取Image对象的方法如下
更多推荐
ImageIO.read()方法读取图片后重写,图片蒙上一层红色的解决办法(上)
发布评论