Bitmap を使ってみた

Bitmap は
java.lang.Object
  ↳ android.graphics.Bitmap
を使用します

また外部ファイルやリソースを読み込むために
java.lang.Object
  ↳ android.graphics.BitmapFactory
を使用します

例えば drawable に入れてあるリソースを Bitmap として使うには
BitmapFactory クラスで変換して利用する
その後 Bitmap クラスを用いて大きさを変換させたり
回転させたり...

というわけで、Bitmap をいじってみた

サンプルプログラム
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;

public class BitmapTest extends Activity {
  private static final int NUM = 4;
  Bitmap bitmap[];
  Matrix matrix;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(new BitmapTestView(this));
  }

  class BitmapTestView extends View {
    public BitmapTestView(Context context) {
      super(context);
      bitmap = new Bitmap[NUM];

      // リソースから Bitmap を取得 
      bitmap[0] = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
      // Bitmap のサイズの取得
      int width = bitmap[0].getWidth();
      int height = bitmap[0].getHeight();
   
      // 45°回転させた Bitmap を作成
      matrix = new Matrix();
      matrix.postRotate(45.0f);  // 回転させる角度を指定
      bitmap[1] = Bitmap.createBitmap(bitmap[0], 0, 0, width, height, matrix, true);
   
      // Bitmap のスケールを指定して作成
      // この場合 (x * 0.5) × (y * 2) の大きさの画像になる
      matrix = new Matrix();
      matrix.postScale(0.5f, 2.0f);  // スケールを指定
      bitmap[2] = Bitmap.createBitmap(bitmap[0], 0, 0, width, height, matrix, true);
   
      // Bitmap の大きさを指定して作成
      // この場合 80 × 48 の大きさの画像になる
      bitmap[3] = Bitmap.createScaledBitmap(bitmap[0], 80, 48, true);
    }

    @Override
    public void onDraw(Canvas canvas) {
      Paint paint = new Paint();
      for (int i = 0; i < NUM; i++) {
        // Bitmap の描画
        canvas.drawBitmap(bitmap[i], i * 80, 0, paint);
      }
    }
  }
}

プログラムを実行すると...


こんな感じ!

ちなみに 引数の filter の部分(最後の引数)の値を変えて比較してみると...


こんな感じに! (左:true, 右:false)
filter をかけるとアンチエイリアスがかかっているっぽい

参考サイト
http://developer.android.com/intl/ja/reference/android/graphics/Bitmap.html
http://developer.android.com/intl/ja/reference/android/graphics/BitmapFactory.html

0 件のコメント:

コメントを投稿