更改位图颜色
Change the bitmap color
里面有一张白底橙色三角形的位图。我想做的是将橙色三角形的颜色更改为我想要的颜色,我该如何用代码做到这一点?我使用了 Porterduff 和 Color Matrix,但没有得到我想要的结果。
原文:click to see the picture
我想用代码做什么:click to see the picture
我不想改变白色背景颜色。
我已经用这个方法改变了位图运行时的颜色。试一试。
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;
}
}
在 colors.xml
中定义起始和终止颜色
<color name="red">#FB0000</color>
<color name="yell">#FFC953</color>
并使用上面的方法如下。
iv.setImageBitmap(replaceColor(bitmap,getResources().getColor(R.color.red),getResources().getColor(R.color.yell)));
里面有一张白底橙色三角形的位图。我想做的是将橙色三角形的颜色更改为我想要的颜色,我该如何用代码做到这一点?我使用了 Porterduff 和 Color Matrix,但没有得到我想要的结果。
原文:click to see the picture
我想用代码做什么:click to see the picture
我不想改变白色背景颜色。
我已经用这个方法改变了位图运行时的颜色。试一试。
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;
}
}
在 colors.xml
中定义起始和终止颜色<color name="red">#FB0000</color>
<color name="yell">#FFC953</color>
并使用上面的方法如下。
iv.setImageBitmap(replaceColor(bitmap,getResources().getColor(R.color.red),getResources().getColor(R.color.yell)));