当前位置: 首页 > 知识库问答 >
问题:

在BufferedImage上执行setRGB将像素更改为黑色而不是彩色

微生啸
2023-03-14

**重要更新,见下文!**

我正在创建一个程序,当BufferedImage的像素满足Java中的一组条件时,它将像素更改为特定的颜色。但是,当我将图像写入磁盘时,应该着色的像素反而是黑色。

Color purple = new Color(82, 0, 99);
int PURPLE = purple.getRGB();
BufferedImage blank = ImageIO.read(new File("some path"));
blank.setRGB(x, y, PURPLE);
File output = new File("some other path");
ImageIO.write(blankIn, "png", output); // try-catch blocks intentionally left out
blank.setRGB(x, y, ((82 << 16) + (0 << 8) + 99));

**当我这样做的时候:

blank.setRGB(x, y, Color.RED.getRGB());

我的输出文件是灰度的,所以这意味着setRGB实际上是在用灰度修改我的图片。我认为这实际上是一个相当简单的问题,但我无法解决。

共有1个答案

季华茂
2023-03-14

根据您在https://stackoverflow.com/a/21981173中发现的见解...(在发布问题几分钟后)...似乎只需在加载图像后将其直接转换为ARGB就足够了:

public static BufferedImage convertToARGB(BufferedImage image)
{
    BufferedImage newImage = new BufferedImage(
        image.getWidth(), image.getHeight(),
        BufferedImage.TYPE_INT_ARGB);
    Graphics2D g = newImage.createGraphics();
    g.drawImage(image, 0, 0, null);
    g.dispose();
    return newImage;
}
 类似资料:
  • “黑白”调整可让您将彩色图像转换为灰度图像,同时保持对各颜色的转换方式的完全控制。也可以通过对图像应用色调来为灰度着色,例如创建棕褐色效果。 执行下列操作之一: 单击“调整”面板中的“黑白”图标 。 选取“图层”>“新建调整图层”>“黑白”。在“新建图层”对话框中,键入调整图层的名称,然后单击“确定”。 Photoshop 会应用默认的灰度转换。 注意:也可以选择“图像”>“调整”>“黑白”。但是

  • 一、目标 在本教程中,您将学习如何将图像从一个颜色空间转换为另一个颜色空间,如BGR <-> leftrightarrow Gray, BGR <-> leftrightarrow HSV等。 除此之外,我们还将创建一个提取视频中彩色对象的应用程序 您将学习以下函数:cv2.cvtColor(), cv2.inRange()等。 二、改变颜色空间 OpenCV中有150多种颜色空间转换方法。但我们

  • 问题内容: 我想从我的Fluke机器人那里得到一张图像,并确定图像中每个像素的颜色。然后,如果像素大部分为红色,请将其更改为完全绿色。如果像素大部分是绿色,请将其更改为完全蓝色。如果像素大部分是蓝色,请将其更改为完全红色。这是我能够做的,但是我无法使它工作以获取必须更改的图像。没有语法错误,这只是语义上的麻烦。我正在使用python。 我尝试的代码: 我也保存了如下图片: 问题答案: 我假设您正在

  • 问题内容: 我有以下代码,该代码创建灰度BufferedImage,然后设置每个像素的随机颜色。 在大约25%到30%的像素中会发生奇怪的行为,我在其中设置颜色,然后立即设置颜色,使其与之前设置的值不同。我是否以错误的方式设置颜色? 问题答案: 这是您的解决方案:禁止getRGB并使用Raster(比getRGB更快,更容易)或更好的DataBuffer(最快,但必须处理编码): 在您的情况下,g

  • 这个问题很基本,但是我想确定没有比我现在做的更好的方法了。假设我有一个脸书图标。到目前为止,当用户悬停在该图像上时,我会显示不同的图像以更改颜色。有没有一种替代的CSS方法来做到这一点,所以我不使用多个图像? 在下面的小提琴中,我试图改变背景,但这只覆盖了整个图像。 JSFIDLE