有人能告诉我如何将RGB图像对象转换为灰度吗?我知道有很多关于如何在Java中执行此操作的信息,但我只想得到针对Codenameone的答案,以便其他人可以从中受益。
答案 0 :(得分:1)
您可以使用Image.getRGB()然后按照以下答案中的说明修改数组:
Convert Image to Grayscale with array matrix RGB java
请注意,上面的答案有点过于简单,因为它没有考虑到每个颜色通道的正确重量以获得适当的灰度效果,但这取决于你的挑剔级别。
然后将此版本的createImage与结果数组一起使用。
答案 1 :(得分:0)
对于任何寻求简化方法(不使用矩阵)的人,Shai都提供了一些示例代码
int[] rgb = image.getRGB();
for(int k = 0;k<rgb.length;k++)
{
if(rgb[k]!=0)
{
int r = rgb[k]/256/256;
rgb[k]=rgb[k]-r*0x10000;
int g = rgb[k]/256;
rgb[k]=rgb[k]-g*0x100;
int b = rgb[k];
int intensity = (int)Math.round(((r+g+b)/(256.0*3.0))*256);
rgb[k] = intensity+(intensity*256)+intensity*(256*256);
}
}
Image grayImage = Image.createImage(rgb,image.getWidth(),image.getHeight());