2011-05-06 148 views
11

我有一个位图,我想改变某些像素。我已经从位图数据到数组,但我将如何设置该数组中的像素颜色?如何改变位图中某些像素的颜色android

感谢

int[] pixels = new int[myBitmap.getHeight()*myBitmap.getWidth()]; 
      myBitmap.getPixels(pixels, 0, myBitmap.getWidth(), 0, 0, myBitmap.getWidth(), myBitmap.getHeight()); 

      for(int i =0; i<500;i++){ 
       //Log.e(TAG, "pixel"+i +pixels[i]); 

回答

18

要设置像素的颜色在你的pixels阵列,从Android的Color类的静态方法获取值,并将其分配到您的阵列。完成后,使用setPixels将像素复制回位图。

例如,把位图蓝色的前五个行:

import android.graphics.Color; 

int[] pixels = new int[myBitmap.getHeight()*myBitmap.getWidth()]; 
myBitmap.getPixels(pixels, 0, myBitmap.getWidth(), 0, 0, myBitmap.getWidth(), myBitmap.getHeight()); 
for (int i=0; i<myBitmap.getWidth()*5; i++) 
    pixels[i] = Color.BLUE; 
myBitmap.setPixels(pixels, 0, myBitmap.getWidth(), 0, 0, myBitmap.getWidth(), myBitmap.getHeight()); 

也可以在一个时间设定在一个位图对象之一的像素的颜色,而不必建立一个像素缓冲器与所述setPixel()方法:

myBitmap.setPixel(x, y, Color.rgb(45, 127, 0)); 
+0

非常感谢很多 – turtleboy 2011-05-07 00:41:17

+0

如何做到这一点,以获得所有像素 – Sheychan 2015-08-19 09:51:16