java - 图像变换导致红色图像?

标签 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;
    }   
}

最佳答案

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

关于java - 图像变换导致红色图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8962990/

相关文章:

java - 在 JavaFX 中对 tableview/tablecolumn 进行排序时如何忽略空单元格

java - 从 JNI 方法中创建 JVM

iOS - 动画 UIButton ImageView 图像导致按钮在之后为 'selected'

android - Android 上的 UI 元素之间是否共享图像资源?

java - org.dbunit.dataset.NoSuchColumnException

java - 属性文件中的 boolean 值

image - 去画图像蒙版

java - 边框布局程序未按预期完成

java - Game Of Life Java MouseAdapter 并不总是有效

java - 将 path2d 添加到 jpanel