我正在使用android studio,我希望获得像素化图像中的所有颜色。我有一个50x50大小的像素化图像。这是图像
我使用该代码读取其中的所有像素。
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.abc);
for(int x=0; x<50; x++){
for(int y=0; y<50; y++){
pixelColor = bmp.getPixel(x,y);
if(pixelColor == Color.BLACK) {
//The pixel is black
}else if(pixelColor == Color.WHITE) {
//The pixel was white
}
}
}
但问题是,图像中还有黑色,而在我的代码中,黑色条件永远不会成真。可能有除红色,绿色或蓝色之外的颜色。如果我可以获得所有颜色的ID,它会很棒,因为我想要提取该图像中的所有颜色。请让我知道我在哪里做错了。谢谢。
答案 0 :(得分:0)
黑色的概念可能就像是一个非常深灰色的&#39;但对于电脑来说,黑色是没有光线,因此是任何颜色。
简单地说,你在图像中看到的黑色很可能是某种形式的深灰色,因为图像中的像素往往与邻居混合在一起,以创造更平滑的图像。
由于Color.BLACK等于十六进制中的0x000000(0红色,0绿色,0蓝色),因此除了完全黑色外,它不会匹配任何内容。你也必须匹配更深的灰色调;要这样做,看看调色板,并确定你认为哪种灰色足够黑。灰色总是混合了绿色,红色和蓝色,大致相同(例如5红色,6蓝色,4绿色)。然后,只需检查红色/绿色/蓝色部分是否低于您认为足够暗的阈值。
答案 1 :(得分:0)
您可以找到其rgb
值
int redValue = Color.red(pixelColor);
int blueValue = Color.blue(pixelColor);
int greenValue = Color.green(pixelColor);
然后你就可以找到你的颜色了。
更新1
color = Color.rgb(redValue, greenValue,blueValue);
if(color == Color.BLACK)
//The pixel is black
}else if(color == Color.WHITE) {
//The pixel was white
}
答案 2 :(得分:0)
您可以在位图中创建一组所有颜色,稍后使用此列表,例如:
Set<Integer> allColors = new TreeSet<Integer>();
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.abc);
for(int x=0; x<50; x++){
for(int y=0; y<50; y++){
pixelColor = bmp.getPixel(x,y);
allColors.add(pixelColor);
}
}