在Android中,我如何通过编程将位图中的黑色(或任何其他颜色)替换为红色?(忽略透明度)尽管我已经可以用一种颜色替换位图中的白色,但是使用相同方法似乎无法替换黑色。
谢谢帮助。
在Android中,我如何通过编程将位图中的黑色(或任何其他颜色)替换为红色?(忽略透明度)尽管我已经可以用一种颜色替换位图中的白色,但是使用相同方法似乎无法替换黑色。
谢谢帮助。
使用以下方法获取位图中的所有像素:
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());
这对我有效
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 )
For better view please check this Link
@nids:你尝试过将你的Color替换为Color.TRANSPARENT吗?那应该可以解决问题...
Bitmap
需要是mutable
,这样才不会抛出IllegalStateException
异常。 - Bartek Lipinski