图像转换会产生红色图像吗?

我试图通过水平翻转并调整图像大小来变换图像。 问题在于,当转换完成时,图片的颜色都很奇怪,它已经变成了红色调。 是否有可能以某种方式解决这个问题,我想我在某处看到它可能是AWT库中的一些错误,但我不确定?

这是代码:

import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class LocalImageSizeFlip { public static void main(String[] args) { BufferedImage img = null; try { img = ImageIO.read(new File("C:\\picture.jpg")); AffineTransform tx = AffineTransform.getScaleInstance(1, -1); tx.translate(0, -img.getHeight(null)); AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_NEAREST_NEIGHBOR); img = op.filter(img, null); img = resize(img, 100, 75); File newFile = new File("newPicture.jpg"); ImageIO.write(img, "JPEG", newFile); } catch (IOException e) { e.printStackTrace(); } } private static BufferedImage resize(BufferedImage image, int width, int height) { BufferedImage resizedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); Graphics2D g = resizedImage.createGraphics(); g.drawImage(image, 0, 0, width, height, null); g.dispose(); return resizedImage; } } 

使图像产生色调通常意味着使用错误的色彩空间渲染图像,Adobe RGB与sRGB是常年的最爱。 尝试在代码中将TYPE_INT_ARGB更改为TYPE_INT_RGB。

您还可以尝试以下类型:BufferedImage.TYPE_3BYTE_BGR