【问题标题】:BufferedImage doesn't change color - JavaBufferedImage 不会改变颜色 - Java
【发布时间】:2016-01-24 03:37:44
【问题描述】:

我正在尝试使用 Java 创建 1920x1080 彩色图像,但由于某种原因我无法更改颜色。我得到的只是黑色,无论我在颜色 RGB 中放置什么值。代码如下:

BufferedImage background = new BufferedImage(1920,1080,BufferedImage.TYPE_INT_ARGB);
Graphics2D g = background.createGraphics();
g.setPaint ( new Color ( 100, 100, 250 ) );
g.fillRect ( 0, 0, background.getWidth(), background.getHeight() );
g.dispose();

try {
    ImageIO.write(background, "jpg", new File("output.jpg"));
} catch (IOException ex) {
    ex.printStackTrace();
}

我做错了什么?

【问题讨论】:

  • 您的代码对我来说很好,并打印出漂亮的灰绿色填充图像。
  • 对我来说不是,因为您的代码对我来说看起来不错。您确定您查看的是正确的output.jpg 文件吗?
  • 是的,我检查的是正确的
  • 当我在 MacBook 上运行此代码并使用预览打开时,我看到一个黑色矩形。当我用 Chrome 打开它时,它是绿色的。
  • 而且.. 当我将图像类型更改为 TYPE_INT_RGB 时,预览和 Chrome 中的图像都是蓝色的。这是有道理的,因为颜色是蓝色的100,100,250。一个明确的提示是色彩空间:当使用类型 TYPE_INT_ARGB 时,色彩空间是 CMYK。使用 TYPE_INT_RGB 时,颜色空间为 RGB。观看者可能对 CMYK 色彩空间的处理不正确。

标签: java bufferedimage


【解决方案1】:

我找到了答案。我改变了:

BufferedImage.TYPE_INT_ARGB

到:

BufferedImage.TYPE_INT_RGB

它奏效了。不过很奇怪。

【讨论】:

猜你喜欢
  • 2017-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-06
  • 1970-01-01
  • 2016-09-11
相关资源
最近更新 更多