ここから本文です

画像(Bitmap)を最後の最後で上手く取得できない件について 教えて頂けないでしょ...

みーさん

2017/12/1301:05:29

画像(Bitmap)を最後の最後で上手く取得できない件について
教えて頂けないでしょうか
よろしくお願いします。

//指定したUriの画像からBitmapを作成するメソッド
//resolver:画像を読み取るクラス、uri:画像の場所
public static Bitmap getImageFromStream(ContentResolver resolver, Uri uri)
throws IOException {
//uriからストリームを開く
InputStream in;
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inJustDecodeBounds = true;
in = resolver.openInputStream(uri);
BitmapFactory.decodeStream(in, null ,opt);
in.close();
int bitmapSize = 1;
//画像が大きいかの判定
if((opt.outHeight * opt.outWidth) > 50000){
//大きい場合は縮小する
double outSize = (double)(opt.outHeight * opt.outWidth)/50000;
bitmapSize = (int)(Math.sqrt(outSize)+1);
}
opt.inJustDecodeBounds = false;
opt.inSampleSize = bitmapSize; //bitmapSizeは13
//ビットマップの再作成をする
in = resolver.openInputStream(uri);
Bitmap bmp = BitmapFactory.decodeStream(in, null , opt);
in.close();
return bmp; //返却値は、”” ただし、View Bitmapをクリックすると元の画像が表示される
}

そのbmpがimageにセットされる⇒ OK
Bitmap image = MyUtils.getImageFromStream(
getContentResolver(), uri);
//RegistrationActivity.this.image = image;

#################################⇒フィールドにセットする際にnullになる
RegistrationActivity.this.image = image;

閲覧数:
37
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

yuk********さん

2017/12/1414:00:57

>画像(Bitmap)を最後の最後で上手く取得できない件について

最後の最後というのはそれまでは問題ないのでしょうか?
uriは確実に取れていますか?このコードではわかりませんが

Optionsを使って大きい画像を直接取り込まない方法をとっていますが
とりあえずそういったものは外してbmpを取り出せるかに注目した方がいいでしょう
あるいはOptionsの問題かもしれませんし


ParcelFileDescriptorをつかてみたらどうでしょう

Bitmap bmp = null;

try{

ParcelFileDescriptor parcelFileDesc =
getContentResolver().openFileDescriptor(uri, "r");
if(parcelFileDesc != null){
FileDescriptor fDesc = parcelFileDesc.getFileDescriptor();
bmp = BitmapFactory.decodeFileDescriptor(fDesc );
parcelFileDescriptor.close();

}

} catch (IOException e) {
e.printStackTrace();
}
}

return bmp;

質問した人からのコメント

2017/12/17 10:59:31

お返事大変遅くなりすみません。
アドバイスを参考にチャレンジしてみます。
ありがとうございました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる