我一直在嘗試將JPG圖像保存到SD卡,然後將其縮小並顯示在ImageView中(由於原始大小導致內存不足錯誤)。Android:將文件保存到SD卡時出錯
下面是我用它來保存文件的方法:
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/SDCA RD/myImage.jpg:打開失敗: EACCES(拒絕)」
,我也做了一定
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
添加到清單。
有沒有人有任何想法?
編輯:錯誤發生在第107行和第72行,這意味着它發生在我嘗試保存圖像時。
凹凸:有人嗎?會真的很感激一些建議。
你確定你已經保存了圖像,然後再嘗試打開它?另外,'inSampleSize = 20'似乎有點高。 – Doomsknight
當我嘗試保存時發生錯誤,所以可能不會。而且圖像絕對巨大,我想將它縮小到非常小,所以20只是一個起點。 – Hallow
你可以分享'url.openStream()'的堆棧跟蹤嗎?你不是想在主線程中進行網絡操作,對嗎? – Akdeniz