2011-10-19 116 views
3

我有一个图像TYPE_3BYTE_BGR,我想将它转换为TYPE_INT_RGB如何获取'TYPE_3BYTE_BGR'图像的RGB值?

虽然我已经搜索过,但我还没有找到一种方法来做到这一点。我想要逐像素地转换图像。但是,似乎BufferedImage.getRGB(i, j)不起作用。

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

+0

你可以做手工,因为你是建议,但它会更简单只是为了创造与TYPE_INT_RGB目标BufferedImage的,只是绘制源图像到目标BufferedImage。 – MeBigFatGuy

+0

尝试了你的建议。使用“result.getGraphics()。drawImage(source,0,0,null);”。像素不会返回到结果图像中。 –

回答

2

我不确定你的意思是“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?

+0

我想你可以放心地忽略alpha通道,因为TYPE_3BYTE_BGR没有alpha通道。 – I82Much

+0

是的,我这样解码,然后设置'setRGB'来绘制TYPE_INT_RGB图像,但最后我得到两个不同的图像。 – user572485

相关问题