JPG 画像を SD カードに保存して、縮小して ImageView に表示しようとしました (元のサイズが原因でメモリ不足エラーが発生したため)。
ファイルを保存するために使用する方法は次のとおりです。
public void saveImage(String src) throws IOException{
URL url = new URL (src);
InputStream input = url.openStream();
try {
File storagePath = Environment.getExternalStorageDirectory();
OutputStream output = new FileOutputStream (new File(storagePath, "myImage.jpg"));
try {
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = input.read(buffer, 0, buffer.length)) >= 0) {
output.write(buffer, 0, bytesRead);
}
}
finally {
output.close();
}
}
finally {
input.close();
}
}
次に、そのメソッドを呼び出して、縮小された画像をメモリにロードして ImageView に配置しようとすると、次のようになります。
try {
saveImage(src);
} catch (IOException e) {
e.printStackTrace();
}
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 20;
File storagePath = Environment.getExternalStorageDirectory();
File file = new File(storagePath, "myImage.jpg");
Bitmap scaledDownImage = BitmapFactory.decodeFile(file.getAbsolutePath(), options);
imageFrame1.setImageBitmap(scaledDownImage);
ただし、これを実行しようとすると、次のような LogCat メッセージが表示されます。
「java.io.FileNotFoundException: /mnt/sdcard/myImage.jpg: オープンに失敗しました: EACCES (許可が拒否されました)」
私も追加することを確認しました
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
マニフェストに。
誰にもアイデアはありますか?
編集: エラーは 107 行目と 72 行目で発生します。これは、画像を保存しようとしたときに発生することを意味します。
バンプ: 誰か?いくつかの提案を本当に感謝します。