请建议一种在位图中按颜色选择区域的有效方法。然后将此选定的区域颜色替换为所需的颜色。
例如,如果图像包含四种颜色,请说红色,绿色,黄色,橙色。现在假设用户点击黄色,因此选择点击位置周围的黄色区域,现在将黄色替换为蓝色。
希望,我正确地解释了这个问题。如果需要进一步澄清,请发表评论。
据我所知,位图是一个消耗内存的任务,导致内存不足错误。
请分享任何有助于我在我的应用中实施此功能的链接或示例代码。
答案 0 :(得分:0)
如果你想获得每个像素的颜色,你可以这样做:
for(int i=0;i<bitmap.getWidth();i++){
for(int j=0;j<bitmap.getHeigth();j++){
int pixel = bitmap.getPixel(i,j);
if(pixel == Color.RED){
//Do something
}
}
}
所以你可以做的是首先找到用户点击的像素的颜色,然后使用上面的技术找到该特定颜色的像素。
您可以使用以下内容获取点击像素的颜色代码:
int ColorCode = imageView.getDrawingCache().getPixel(x, y);
这里x,y是坐标。您可以参考此链接以获取更多信息 - link
并且不要忘记在将位图加载到内存之前缩小位图以防止OutOfMemory
问题。你可以参考android文档来找到如何做到这一点。 Handling large bitmaps
答案 1 :(得分:0)
花了很多时间后,我得到了一个有用的链接来完成这项工作。它叫做Kids Palette和here I'm sharing the link of source on GitHub。
答案 2 :(得分:0)
使用Palette API怎么样?