2012-03-02 115 views
1

我有一个位图,并希望能够将该位图中的所有黑色像素更改为蓝色。我知道你可以通过Bitmap.setPixel来做到这一点,但是这个过程非常缓慢(相信我,我试过了......即使是setPixels而不是setPixel)。在Android中,如何将位图上的颜色更改为另一种颜色?

研究这是看看哪里的人推荐使用PorterDuff异或,但没有任何文章如何成功完成。很多人问......没有人拼出答案。

因此,使用颜料,位图和画布时,如何将每个黑色像素更改为全部蓝色像素?

谢谢!

+0

您是否确定使用'getPixels'而不是'getPixel'? PorterDuff XOR应该可以工作,但它不一定会那么快。 – kabuko 2012-03-02 21:01:40

+0

虽然要困难得多,但使用NDK并在C代码中进行位图操作是获得高性能的方法 – CSmith 2012-03-02 21:40:26

+0

我没有尝试getPixels,只是getPixel。我想我可以这样做,看看它是否足够快。正在考虑PorterDuff方法应该是快速的,但我甚至找不到它用来做这件事的一个例子。在过去的几个小时里,我一直在使用ColorMatrix路线,但在将黑色变为某种东西时似乎并不奏效。只有红色,绿色或蓝色的其他东西。 – user443654 2012-03-03 05:45:19

回答

1

你只是拉

myBitmap.getPixels(myPixels,0,0,0,myBitmap.getWidth(),myBitmap.getHeight())

和环比myPixels期待的位图的像素无论你想要什么颜色,并将该像素修改为任何你喜欢的颜色。

+0

这样做。将getPixels而不是getPixel。谢谢! – user443654 2012-03-03 06:31:14

相关问题