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) {

      }
    }
  }
}



このページへのコメント

askaです.

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

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

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

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

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

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

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

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

askaです.

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

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

はじめまして、画像表示とっても参考になりました。
ありがとうございます。
画像が表示できた時はとても感動しました!
そこで・・・・
画像を表示できた後、その画像を保存する場合の
方法等を教えていただけないでしょうか?

Posted by ぽんぽこ 2013年08月27日(火) 11:07:31

コメントをかく


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

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

Menu


逆引き(基礎編)

画面表示/操作(49)

フラグメント(1)

逆引き(応用編)

AD



管理人のみ編集できます