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