Android:更改位图的颜色

时间:2012-07-12 10:15:19

标签: android colors bitmap draw paint

让我说我有这个位图,这是一个涂成全黑色的随机形状,并且说我想要改变它的颜色,我的位图是否必须首先涂成白色或者还有其它东西吗? / p>

1 个答案:

答案 0 :(得分:3)

如果你正在使用Canvas,改变位图颜色的方法是改变位图本身。涉及的步骤如下:

假设您要加载某个地方的现有位图,并且想要以某种方式将其着色为红色。

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bitmap);

之后,您需要在将其绘制到Canvas上之前修改位图的像素。您创建一个将保存所有像素的int数组。

int[] pixels;
bitmap.getPixels(pixels, 0, 0, 0, 0, width, height);

之后,您需要修改数组(例如,添加到红色组件)。但是,现在我们所有的都是像素数组中的int值。 R,G和B都装在里面。如何检索它们?

int red = Color.red(pixels[n]);
int green = Color.green(pixels[n]);
int blue= Color.blue(pixels[n]);

然后你可以根据需要修改像素的值,你可以把它放在一个循环中,或者你喜欢,然后把它放回像素数组。此外,RGB值从0到255,因为它们是8位值。

在那之后你会使用完全相反的功能将它们放回去。

bitmap.setPixels(pixels, 0, 0, 0, 0, width, height);

然后你准备去调用Canvas.drawBitmap();

请记住,如果您经常这样做,这个过程应该很慢,除非您对游戏等实时应用感兴趣,否则Canvas是一种缓慢的做事方式。

希望它有所帮助!