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