【问题标题】:Android - store image on a temp file cross-activityAndroid - 在临时文件交叉活动中存储图像
【发布时间】:2016-09-16 18:34:41
【问题描述】:
在我正在开发的应用程序中,我有一个活动,其中我显示了两个由两个位图组成的 ImageViews,分别为 ca.bm 和 ca.tempBm。它在我的设备上运行良好,但在尝试将原始位图复制到稍后我将修改的位图时,在某些设备上会产生 OutOfMemoryError:
ca.tempBm = Bitmap.createBitmap(ca.bm); // out of memory error
我想创建一个临时文件来保存原始图像并使用单个位图,但是从相机活动更改为下一个活动时必须保留临时文件,并且只有在第二个活动时才应销毁会的。
我怎样才能做到这一点?
【问题讨论】:
标签:
android
bitmap
temporary-files
【解决方案1】:
您可以使用以下命令将位图写入缓存目录:
FileOutputStream outStream = new FileOutputStream(new File(getCacheDir(), "tempBMP"));
myBitmap.compress(Bitmap.CompressFormat.JPEG, 75, outStream);
outStream.close();
然后读回:
Bitmap myBitmap = BitmapFactory.decodeFile(bitmapPath.getAbsolutePath());
但您最好通过创建一个较小的位图来节省内存,将较大的位图绘制到较小的位图的画布上,然后在活动之间传递较小的位图。