我下载的位图是这样的:加载位图有效地从内部存储,而不是资源的
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