我有一个图像TYPE_3BYTE_BGR
,我想将它转换为TYPE_INT_RGB
。如何获取'TYPE_3BYTE_BGR'图像的RGB值?
虽然我已经搜索过,但我还没有找到一种方法来做到这一点。我想要逐像素地转换图像。但是,似乎BufferedImage.getRGB(i, j)
不起作用。
如何获取TYPE_3BYTE_BGR
类型的图像中的RGB值?
我有一个图像TYPE_3BYTE_BGR
,我想将它转换为TYPE_INT_RGB
。如何获取'TYPE_3BYTE_BGR'图像的RGB值?
虽然我已经搜索过,但我还没有找到一种方法来做到这一点。我想要逐像素地转换图像。但是,似乎BufferedImage.getRGB(i, j)
不起作用。
如何获取TYPE_3BYTE_BGR
类型的图像中的RGB值?
我不确定你的意思是“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通道。 – I82Much
是的,我这样解码,然后设置'setRGB'来绘制TYPE_INT_RGB图像,但最后我得到两个不同的图像。 – user572485
你可以做手工,因为你是建议,但它会更简单只是为了创造与TYPE_INT_RGB目标BufferedImage的,只是绘制源图像到目标BufferedImage。 – MeBigFatGuy
尝试了你的建议。使用“result.getGraphics()。drawImage(source,0,0,null);”。像素不会返回到结果图像中。 –