SD カードからビットマップをスケーリングして電話のメモリに書き込もうとしています。その後、後でデコードして に追加しHashMap
ます。
問題は、パスが正しく、スケーリングされた画像が存在するにもかかわらず、ファイルが見つからないという例外が発生することです(確認しました)
これが節約部分です
Bitmap yourSelectedImage = BitmapFactory.decodeStream(imageStream, null, options );
File imageRootPath = getFilesDir();
File imageRoot = new File(imageRootPath, imagUri.getLastPathSegment()+".png");
FileOutputStream out = new FileOutputStream(imageRoot);
yourSelectedImage.compress(Bitmap.CompressFormat.PNG, 90, out);
そして、これがファイルを読んだときの部分です
try {
Uri mainImgeUri = Uri.parse(imageRoot.toString());
File imageFile = new File(mainImgeUri.toString());
if(imageFile.exists()){
System.out.println("it does");
}
InputStream imageStream = ListPropertiesBaseActivity.this.getContentResolver().openInputStream(mainImgeUri); // I am getting file not found error
Bitmap yourSelectedImage =BitmapFactory.decodeStream(imageStream);
hmBitmap.put(ID, yourSelectedImage);
imageStream.close();
} catch (Exception e) {
e.printStackTrace();
}
OpenInputStream
内部電話メモリから読み取ることができない可能性がありますか? それとも、保存した結果の画像が良くないのでしょうか?
手動でファイルを参照して開くことで表示できましたが、
System.out.Println が実行されるので、ファイルが存在することを意味することに注意してください。