最終更新:
moonlight_aska 2011年07月30日(土) 11:38:55履歴
インテント(Intent)で呼び出したギャラリーから選択された画像を取得することができる.

↓ 画像を選択

(出典:Android版「美人時計」より)

↓ 画像を選択

(出典:Android版「美人時計」より)
- ImageView.java
- Intentのインスタンスを生成する.
- Intent#setTypeメソッドで, 画像全般("image/*")を指定する. jpegに限定する場合は, "image/jpeg"と指定.
- Intent#setActionメソッドで, Intent.ACTION_GET_CONTENTを指定する.
- startActivityForResuitメソッドで, リクエストコードを指定してインテント呼出しする.
- ギャラリーでの選択結果を受け取るために, onActivityResultメソッドをオーバーライドする.
- リクエストコードをチェックし, ギャラリーからのイベントか判断する.
- Intent#getDataメソッドを使って選択された画像へのパスを取得する.
- ContentResolver#openInputStremaメソッドで, InputStreamをオープンする.
- BitmapFactory#decodeStreamメソッドで, ビットマップに変換する.
- InputStream#closeメソッドで, InputStreamをクローズする.
package com.moonlight_aska.android.imageview;
import java.io.InputStream;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ImageView;
public class ImageViewActivity extends Activity {
private static final int REQUEST_GALLERY = 0;
private ImageView imgView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imgView = (ImageView)findViewById(R.id.imgview_id);
// ギャラリー呼び出し
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, REQUEST_GALLERY);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
if(requestCode == REQUEST_GALLERY && resultCode == RESULT_OK) {
try {
InputStream in = getContentResolver().openInputStream(data.getData());
Bitmap img = BitmapFactory.decodeStream(in);
in.close();
// 選択した画像を表示
imgView.setImageBitmap(img);
} catch (Exception e) {
}
}
}
}
このページへのコメント
この記事とても助かりました!ありがとうございます。
可能であれば、画像を丸くトリミングして表示する方法も追加で掲載していただけないでしょうか。
よろしくお願い致します。
askaです.
> 実行したのですが、アプリが終了してしまいます。
> 考えられる原因はなんでしょうか。
このコメントだけでは, 何が起きているかわからないです.
プログラムが思った動作をしていない場合, まずはLogCatのログを見るか,
Run > Debugでトレースしてみると, どこで何が起きているわかるかと思います.
大変勉強になります。
実行したのですが、アプリが終了してしまいます。
考えられる原因はなんでしょうか。
お忙しいとは思いますが返答をよろしくお願いします。
ありがとうございます。
とても参考になりました。
askaです.
Bitmap#compressメソッドを使えば, JPEGやPNGなどのフォーマットを指定してファイルに保存できます.