【Android】Bitmapクラス

Android Tipsプログラミング

画像クラスBitmapは、BitmapFactoryクラスより生成します。android OSでは1つのアプリケーションに割り当てられるメモリサイズが非常に小さいため、画像を読み込む際には注意が必要です。

画像ファイル
/res/drawable/image_sample.png

import android.app.Activity;
import android.content.Resources;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;

public class MyClass extends Activity{

  public void myMethod(String path){
    // リソースIDから読み込む
    Resources rsc = getResources();
    Bitmap bmp1 = BitmapFactory.decodeResource(rsc,R.drawable.image_sample);

    // 直接ファイル名(path)を指定する場合
    Bitmap bmp2 = BitmapFactory.decodeFile(path);

    // 画像のサイズ情報のみ取得する
    // 幅:opt.outWidth [px] 高さ:opt.outHeight [px]
    BitmapFactory.Options opt = new BitmapFactory.Options();
    opt.inJustDecodeBounds = true; // 画像サイズ情報のみ取得
    BitmapFactory.decodeFile(path,opt);
    int width = opt.outWidth();
    int height = opt.outHeight();

    // オプションを指定して読み込むサイズを調節する
    opt.inSampleSize = 4; // 1/4のサイズで読み込む 2,4,8,16 ……
    opt.inJustDecodeBounds = false;
    Bitmap bmp3 = BitmapFactory.decodeFile(path,opt);

    // ビットマップを加工する
    // ALPHA_8:Alphaのみ
    // RGB_565:Alphaなし
    // ARGB_4444:16bit階調
    // ARGB_8888:32bit階調
    int w = bmp3.getWidth();
    int h = bmp3.getHeight();
    Bitmap bmp4 = bmp3.copy(Bitmap.Config.ARGB_4444,true);
    int[] pixels = new int[w * h];
    Bitmap bmp5 = bmp4.getPixels(pixels,0,w,0,0,w,h);
  }
}

参考: 音を鳴らす

コメント