C/C++プログラマの管理者が, Androidプログラムにチャレンジ. AndroidプログラミングのTipsをメモっていく予定です.

インテント(Intent)で呼び出したギャラリーから選択された画像を取得することができる.


        画像を選択

(出典: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) {

      }
    }
  }
}



このページへのコメント

この記事とても助かりました!ありがとうございます。
可能であれば、画像を丸くトリミングして表示する方法も追加で掲載していただけないでしょうか。
よろしくお願い致します。

0
Posted by yamame 2021年07月14日(水) 18:38:36 返信

askaです.

> 実行したのですが、アプリが終了してしまいます。
> 考えられる原因はなんでしょうか。

このコメントだけでは, 何が起きているかわからないです.

プログラムが思った動作をしていない場合, まずはLogCatのログを見るか,
Run > Debugでトレースしてみると, どこで何が起きているわかるかと思います.

1
Posted by aska 2013年12月17日(火) 23:03:31 返信

大変勉強になります。
実行したのですが、アプリが終了してしまいます。
考えられる原因はなんでしょうか。
お忙しいとは思いますが返答をよろしくお願いします。

1
Posted by st 2013年12月15日(日) 16:36:30 返信

ありがとうございます。
とても参考になりました。

1
Posted by ぽんぽこ 2013年08月28日(水) 16:26:33 返信

askaです.

Bitmap#compressメソッドを使えば, JPEGやPNGなどのフォーマットを指定してファイルに保存できます.

1
Posted by aska 2013年08月27日(火) 23:58:03 返信

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu


逆引き(基礎編)

画面表示/操作(49)

フラグメント(1)

逆引き(応用編)

Firebase(2)

AD



管理人/副管理人のみ編集できます