如何在位图中按颜色选择区域?

时间:2015-10-31 14:38:51

标签: android android-bitmap colorfilter android-renderscript

请建议一种在位图中按颜色选择区域的有效方法。然后将此选定的区域颜色替换为所需的颜色。

例如,如果图像包含四种颜色,请说红色,绿色,黄色,橙色。现在假设用户点击黄色,因此选择点击位置周围的黄色区域,现在将黄色替换为蓝色。

希望,我正确地解释了这个问题。如果需要进一步澄清,请发表评论。

据我所知,位图是一个消耗内存的任务,导致内存不足错误。

请分享任何有助于我在我的应用中实施此功能的链接或示例代码。

3 个答案:

答案 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怎么样?