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 件のコメント:
コメントを投稿