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

Java BufferedImage setRGB、getRGB错误

严瀚昂
2023-03-14
System.out.println(newColors[0] + ", " + newColors[1] + ", " + newColors[2]);
Color oldColor = new Color(image.getRGB(x, y));
Color newColor = new Color(newColors[0], newColors[1], newColors[2], oldColor.getAlpha()); // create a new color from the RGB values.
image.setRGB(x, y, newColor.getRGB());// set the RGB of the pixel in the image.

for (int col : getRGBs(x,y)) {
    System.out.println(col);
}
    null
206, 207, 207
204
203
203

正如您所看到的,值206、207、207从图像返回为204、203、203-实际上,我更改的每个像素都返回为204、203、203。我做错了什么?只是说不通。提前感谢!

共有1个答案

陶法
2023-03-14

我在网上找到了自己的答案,我将总结如下:

在带有ColorModel的BufferedImages中,将像素设置为所选的最接近的颜色。这意味着您可能无法获得所需的颜色,因为您可以设置的颜色仅限于ColorModel中的颜色。您可以通过创建自己的BufferedImage来解决这个问题,并将源图像绘制到该BufferedImage上,然后操作这些像素。

BufferedImage original = ImageIO.read(new File(file.getPath()));

    image= new BufferedImage(original.getWidth(), original.getHeight(), BufferedImage.TYPE_3BYTE_BGR);
    image.getGraphics().drawImage(original, 0, 0, null);
     for(int y = 0; y < original.getHeight(); y++){
            for(int x = 0; x < original.getWidth(); x++){
                image.setRGB(x,y, original.getRGB(x,y));
            }
     }

这就解决了问题。显然,colormodel没有我指定的颜色,因此将像素调整为尽可能接近的颜色。

 类似资料:
  • 我对色彩、渲染等都是新手,还看了一些关于渲染等的教程视频。我的问题是,当我对像素调用方法时,它会返回一个负整数。这个负数是什么意思?例如,当a:186:rgb>打开时,调用它。这个数字和它的rgb值有什么关系?我在谷歌上搜索了几次,但没有成功。

  • 我正在编写一个具有简单隐写实现的程序。 我有一个问题,因为如果我对一个像素使用setRGB,然后使用getRGB,我会得到不同的值。我读到setRGB和getRGB不是字节和位运算的最佳方案,但也许有一种方法?我想使用每个像素的阿尔法红、绿、蓝的LSB,但我不知道如何使用光栅,老实说,我花了很多时间编写一些代码来生成适当的TYPE_INT_ARGB值。。。我想使用ARGB中的每2个LSB,所以我有

  • 问题内容: 我有从获得的整数像素,但是我不知道如何将其转换为RGBA格式。例如,应为。有小费吗? 问题答案: 如果我猜对了,您得到的是形式为的无符号整数,因此 将提取颜色分量。但是,快速浏览一下文档会发现您可以 要么 如果您也想在颜色中使用alpha分量。 更新 红色和蓝色成分在原始答案中是相反的,因此正确的答案将是: 在第一段代码中也进行了更新

  • 我正在尝试搜索亚马逊的产品广告,并使用botlenose来帮助我做到这一点。但是,我刚刚收到HTTP错误400。 其他一些重要信息: 我来自巴西,我的标签也来自亚马逊。这是个问题吗? 我确实检查了我的钥匙、秘密和标签,一切正常。我确实在StackOverflow上查看了其他一些问题,但对我来说没有任何效果。 当然,出于安全原因,我更改了密钥。 Traceback(最近一次调用最后一次):File"

  • 我有一个基于Spring Web model view controller(MVC)框架的项目。Spring Web模型-视图-控制器(MVC)框架的版本是3.2.8 我有这个控制器 这个URL一切正常:

  • 目前从Angular JS controller中,我试图将JSON数据发送到后端服务。但是我有400个错误的请求错误。 在Controller中,我试图通过http服务发送数据,如下所示: