- リソースIDからImageViewにイメージを表示する
- リソースIDで指定した画像をBitmapオブジェクトに変換する
- Bitmapオブジェクトをbyte配列に変換する
- byte配列をBitmapオブジェクトに変換する
- BitmapオブジェクトをImageViewに表示する
- ImageViewの画像を消す
|
■リソースIDからImageViewにイメージを表示する
layoutのxmlで指定するなら、次のようにします。
@drawable/ic_launcherはres-drawableの中にic_launcher.pngなどがあったら、その拡張子を除いたものです。
<ImageView
android:id="@+id/gazou"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" />
|
プログラムの中でリソースに登録された画像をセットするなら次のようになります。
ImageView v = (ImageView)findViewById(R.id.gazou);
v.setImageResource(R.drawable.ic_launcher);
|
■リソースIDで指定した画像をBitmapオブジェクトに変換する
Resources r = getResources();
Bitmap bmp = BitmapFactory.decodeResource(r, R.drawable.ic_launcher);
|
■Bitmapオブジェクトをbyte配列に変換する
SqLiteに保存するときなどbyte配列に変換する必要があります。
上で作成したBitmapオブジェクトをbyte配列に変換するのが下のプログラムです。
compressメソッドの第2引数はcompressorへのヒント用に0-100の値を入れ、0は画像サイズが小さいことを示し、100は大きいことを示します。
ただ、pngなどの形式ではこの値は無視されると書いてありますので、まあ、適当な値を入れておけばよいのでしょう。
また、第1引数は、画像の形式がPNGであることを示します。JPEGなら、CompressFormat.JPEGとなります。
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(CompressFormat.PNG, 100, baos);
byte[] bytes = baos.toByteArray();
|
■byte配列をBitmapオブジェクトに変換する
今度は逆にbyte配列をBitmapオブジェクトに変換します。
SqLiteに保存されていた画像を表示する時などに必要です。
decodeByteArrayの第2引数はオフセット(bytes配列のどこからか)を示します。
第3引数はオフセットから数えて何バイトを変換するかを示します。
Bitmap bmp = null;
byte[] bytes = xxx; //ここに画像データが入っているものとする
if (bytes != null) {
bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
}
|
■BitmapオブジェクトをImageViewに表示する
上で作成したBitmapオブジェクトをImageViewに表示するには次のようにします。
ImageView v = (ImageView)findViewById(R.id.gazou);
v.setImageBitmap(bmp);
|
■ImageViewの画像を消す
これでよいのかどうかわかりませんが、これを実行するとエラーにもならず、画像は消えます
ImageView v = (ImageView)findViewById(R.id.gazou);
v.setImageBitmap(null);
|
にほんブログ村