使用java处理32位的图片(右键图片->属性->图片信息->图像->位深度 32 分辨率单位 2)时,总是会颜色丢失;甚至直接使用ImageIO.read(new File(srcImageFile))直接就抛了异常:javax.imageio.IIOException: Unsupported Image Type。只能使用这种来读取JPEGCodec.createJPEGDecoder(new FileInputStream(srcFile)).decodeAsBufferedImage(),可以成功读取,但是在切割之后,发现图片颜色已经被改变,切割之后发现切割后的图片位深度能够保持32,但是分辨率单位 已经不是2,其他的信息都和原图保持一致,不知道是不是“分辨率单位”变化导致的。其中,切割32位图片时用的是 如下方式,即保持原图类型来切割:
BufferedImage tag = new BufferedImage(new_w, new_h,srcImage.getType());
tag.getGraphics().drawImage(srcImage, 0, 0, new_w, new_h, null);
另外,测试使用循环,使用0-14的所有type来切割都发现有不同程度的变色失真或报错。
不知道有没有遇到过这类问题的?