【问题标题】:How can I get the RGB values of a 'TYPE_3BYTE_BGR' image?如何获取“TYPE_3BYTE_BGR”图像的 RGB 值?
【发布时间】:2011-12-10 15:16:35
【问题描述】:

我有一张带有TYPE_3BYTE_BGR 的图片,我想将其转换为TYPE_INT_RGB

虽然我已经搜索过,但我还没有找到一种方法来做到这一点。我想逐像素转换图像。不过,BufferedImage.getRGB(i, j) 好像不行。

如何获取TYPE_3BYTE_BGR 类型图像中的 RGB 值?

【问题讨论】:

  • 您可以按照您的建议手动执行此操作,但只需使用 TYPE_INT_RGB 创建目标 BufferedImage,然后将源图像绘制到目标 BufferedImage 中就会简单得多。
  • 尝试了您的建议。使用“result.getGraphics().drawImage(source, 0, 0, null);”。结果图像中的像素不会还原。

标签: java image


【解决方案1】:

我不确定您所说的“getRGB(i,j) 不起作用”是什么意思。 getRGB 返回一个压缩的 int;你需要解码它。

int color = image.getRGB(i,j);
int r = (argb)&0xFF;
int g = (argb>>8)&0xFF;
int b = (argb>>16)&0xFF;
int a = (argb>>24)&0xFF;

How to convert get.rgb(x,y) integer pixel to Color(r,g,b,a) in Java?

【讨论】:

  • 我认为您可以放心地忽略 Alpha 通道,因为 TYPE_3BYTE_BGR 没有 Alpha 通道。
  • 是的,我是这样解码的,然后设置'setRGB'来绘制TYPE_INT_RGB图像,但最后我得到了两个不同的图像。
猜你喜欢
  • 2012-08-11
  • 2020-06-20
  • 2010-09-13
  • 2014-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多