getPixel(int x, int y)
または
getPixels(int[] pixels, int offset, int stride, int x, int y, int width, int height)
を使ってPixelを取得、
setPixel(int x, int y, int color)
または
setPixels(int[] pixels, int offset, int stride, int x, int y, int width, int height)
で設定します
というわけで、Pixel操作をしてみた
サンプルプログラム
import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.os.Bundle; import android.view.View; public class BitmapTest2 extends Activity { Bitmap bitmap; int pixels[]; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new BitmapTest2View(this)); } class BitmapTest2View extends View { public BitmapTest2View(Context context) { super(context); // リソースから Bitmap を取得 bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon); // もし編集不可なら、編集可能な Bitmap を複製 if (!bitmap.isMutable()) { bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true); } int width = bitmap.getWidth(); int height = bitmap.getHeight(); pixels = new int[width * height]; // Bitmap から Pixel を取得 bitmap.getPixels(pixels, 0, width, 0, 0, width, height); // Pixel 操作部分 for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { int pixel = pixels[x + y * width]; pixels[x + y * width] = Color.argb( Color.alpha(pixel), Color.green(pixel), Color.blue(pixel), Color.red(pixel) ); } } // Bitmap に Pixel を設定 bitmap.setPixels(pixels, 0, width, 0, 0, width, height); } @Override public void onDraw(Canvas canvas) { // Bitmap の描画 canvas.drawBitmap(bitmap, 0, 0, new Paint()); } } }
プログラムを実行すると...
こんな感じ!
なんか紫色だと違和感が...
参考サイト
http://developer.android.com/intl/ja/reference/android/graphics/Bitmap.html
0 件のコメント:
コメントを投稿