ギャラリーからの画像取得(ファイルパス)

2,480 views
Skip to first unread message

funas...@gmail.com

unread,
Mar 26, 2013, 10:03:10 AM3/26/13
to android-g...@googlegroups.com
現在、ギャラリーからの画像取得(ファイルパス)を考えています。
テストしたところ、
android2.3まででは
/mnt/sdcard/DCIM/Camera/IMG_********.jpg
といったファイルパスを取得でき、
   filename = new StringBuilder("file:/"+path);
   Uri uri = Uri.parse(filename.toString());
   InputStream is;
   try {
    is = getContentResolver().openInputStream(uri);
    Bitmap bitmap = BitmapFactory.decodeStream(is);
    imageView.setImageBitmap(bitmap);
   } catch (FileNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
   }
で表示することができます。
 
しかし、android4.2(SC-03D)では
/storage/sdcard0/DCIM/Camera/IMG_********.jpg
といったファイルパスを取得し、
上記の処理ができません。
 
どなたか対処方法をご存じないでしょうか?

Hirokazu Fukami

unread,
Mar 26, 2013, 10:08:09 AM3/26/13
to android-g...@googlegroups.com
こんばんはfkmです。

質問です
pathはどうやって取得しているのでしょうか?

2013/3/26 <funas...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループから退会し、メールの受信を停止するには、android-group-j...@googlegroups.com
> にメールを送信します。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> http://groups.google.com/group/android-group-japan?hl=ja
> からこのグループにアクセスしてください。
> その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
>
>



--
-------------------------------------------------------------
深見 浩和(Hirokazu Fukami)

URI:http://www.fkmsoft.jp
email: f...@fkmsoft.jp

funas...@gmail.com

unread,
Mar 26, 2013, 10:52:06 AM3/26/13
to android-g...@googlegroups.com
返信ありがとうございます。
パスの取得はギャラリーを起動後、
onActivityResultにて以下の処理を行っています。
 
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {

           super.onActivityResult(requestCode, resultCode, data);

      //uriにnullを詰めるコードを消す
           Uri uri = null;
           if (requestCode == GALLERY_IMAGE) {
            uri= data.getData();
            }
           
         try {
               InputStream is = getContentResolver().openInputStream(uri);
               Bitmap bitmap = BitmapFactory.decodeStream(is);
                
            //ContentResolver経由でファイルパスを取得
            ContentResolver cr = getContentResolver();
            String[] columns = {MediaStore.Images.Media.DATA };
            Cursor c = cr.query(uri, columns, null, null, null);
               
            int column_index = c.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            c.moveToFirst();
            path=c.getString(column_index);

            imageView.setImageBitmap(bitmap);
          } catch (Exception e){
           // } catch (FileNotFoundException e) {
               // TODO 自動生成された catch ブロック
               e.printStackTrace();
               return;
           }
      }

ごりぽん

unread,
Mar 26, 2013, 6:34:42 PM3/26/13
to android-g...@googlegroups.com
 細かいことですが1つツッコミ。

filename = new StringBuilder("file:/"+path);

 "file:/"だと、スラッシュが1コ足りないと思うんですが……。

filename = new StringBuilder("file://"+path);

 にしたら動く、とかそういうオチだったりはしないですかね?

 ちなみに"file://<サーバ名>/<ファイルパス>"というのが正しい書式で、この
場合は<サーバ名>を省略するので"file:///<ファイルパス>"でないとオカシイです。

ごりぽん
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送ら
> れています。
> このグループから退会し、メールの受信を停止するには、android-group-
> japan+un...@googlegroups.com にメールを送信します。
> このグループに投稿するには、android-g...@googlegroups.com にメー
> ルを送信してください。
> http://groups.google.com/group/android-group-japan?hl=ja からこのグルー
> プにアクセスしてください。
> その他のオプションについては、https://groups.google.com/groups/opt_out
> にアクセスしてください。
Message has been deleted
Message has been deleted

takada

unread,
Mar 26, 2013, 9:33:36 PM3/26/13
to android-g...@googlegroups.com
はじめまして。
すみません。投稿に慣れてなくて何度か書いたり消したりしてしまいました。
 
正しい方法かどうかわかりませんが、私はこれでできました。
参考までにどうぞ。
===================
String img_path = data.getDataString();
if (img_path.indexOf("content:") == 0)
{
Uri uri = Uri.parse(img_path);
Cursor cur = getContentResolver().query(uri, null, null, null, null);
cur.moveToPosition(0);
img_path = cur.getString(1);
cur.close();
}
Bitmap bitmap = BitmapFactory.decodeFile(img_path)
===================
Reply all
Reply to author
Forward
0 new messages