用红色替换位图中的黑色

时间:2011-08-30 01:49:31

标签: android

如何在Android中以编程方式用红色(或任何其他颜色)替换位图中的黑色(忽略透明度)?我可以用一种颜色替换位图中的白色,但它不知道黑色。 谢谢你的帮助。

3 个答案:

答案 0 :(得分:35)

使用以下方法获取位图中的所有像素:

int [] allpixels = new int [myBitmap.getHeight() * myBitmap.getWidth()];

myBitmap.getPixels(allpixels, 0, myBitmap.getWidth(), 0, 0, myBitmap.getWidth(), myBitmap.getHeight());

for(int i = 0; i < allpixels.length; i++)
{
    if(allpixels[i] == Color.BLACK)
    {
        allpixels[i] = Color.RED;
    }
}

myBitmap.setPixels(allpixels,0,myBitmap.getWidth(),0, 0, myBitmap.getWidth(),myBitmap.getHeight());

答案 1 :(得分:1)

@nids:您是否尝试过将Color替换为Color.TRANSPARENT?这应该有用......

答案 2 :(得分:1)

这对我有用

    public Bitmap replaceColor(Bitmap src,int fromColor, int targetColor) {
    if(src == null) {
        return null;
    }
    // Source image size
    int width = src.getWidth();
    int height = src.getHeight();
    int[] pixels = new int[width * height];
    //get pixels
    src.getPixels(pixels, 0, width, 0, 0, width, height);

    for(int x = 0; x < pixels.length; ++x) {
        pixels[x] = (pixels[x] == fromColor) ? targetColor : pixels[x];
    }
    // create result bitmap output
    Bitmap result = Bitmap.createBitmap(width, height, src.getConfig());
    //set pixels
    result.setPixels(pixels, 0, width, 0, 0, width, height);

    return result;
}

现在设置您的位图

replaceColor(bitmapImg,Color.BLACK,Color.GRAY  )

要获得更好的视图,请检查此Link