我下載的位圖是這樣的:加載位圖有效地從內部存儲,而不是資源的
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
...
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
並將其保存到內部存儲這樣的:
fos = new FileOutputStream(filePath);
image.compress(Bitmap.CompressFormat.JPEG, 90, fos);
但研究google page about bitmaps之後,說下載一個大的位圖到內存中可能會拋出一個outOfMemory異常,所以我應該縮放這個位圖來佔用內存上更小的空間。問題是,頁面上的代碼僅解釋如何使用資源圖像來完成此操作,而不是來自內部存儲器的圖像。所以,我有兩個問題:
如何從內部存儲位圖?
而且
有沒有一種方法來下載和保存圖像都以某種方式?
我第一次創建一個位圖圖像,然後將它傳遞給將保存它的方法,所以我假設圖像被完全加載到內存中,然後它被保存到內部存儲。
扔掉BitmapFactory。 Indead應該創建一個循環,從輸入流中讀取塊並將它們直接寫入文件輸出流。 – greenapps
你正在談論'內部記憶',但是如果這成爲現實,我們就無法在'filePath'上看到。 – greenapps
它看起來不像加載位圖的問題。 – greenapps