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

时间:2012-01-22 17:19:53

标签: java image awt transform

我试图通过水平翻转并调整图像大小来变换图像。问题在于,当转换完成时,图片的颜色都很奇怪,它已经变成了红色调。有可能以某种方式解决这个问题,我想我在某个地方看到它可能是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;
    }   
}

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果您已经转换了任何图像,而这些图像几乎变成粉红色/红色。

您可以再次将它们转换为RGB。

$ flask db upgrade