【发布时间】:2016-07-26 21:47:11
【问题描述】:
我正在下载这样的位图:
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 你应该创建一个循环,从输入流中读取块并将它们直接写入文件输出流。
-
您说的是“内部存储器”,但如果这是真的,我们无法在“文件路径”上看到。
-
看起来不是加载位图的问题。
标签: android performance memory bitmap