我必须将一个位图从一个活动传递到另一个活动,但是我在intent.getParcelableExtra
中将位图作为byteStream传递时出现OutOfMemory错误,因此我将图像临时保存在内部存储中,并在目标中检索它活性。
来源活动
Bitmap btmp = //my bitmap here.
String fileName = "tempfile_wip";
try {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
btmp.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
FileOutputStream fo = openFileOutput(fileName, Context.MODE_PRIVATE);
fo.write(bytes.toByteArray());
fo.close();
Intent i = new Intent(getApplicationContext(), apply_effects.class);
startActivity(i);
} catch (Exception e) {
Toast.makeText(context, "Error 010", Toast.LENGTH_SHORT).show();
}
目标活动
try {
ImageView image = (ImageView) findViewById(R.id.iv_effect);
Bitmap bitmap = BitmapFactory.decodeStream(this.getApplicationContext().openFileInput("tempfile_wip"));
image.setImageBitmap(bitmap);
}
catch(Exception ex) {
Toast.makeText(this.getApplicationContext(), "Error 009 occurred.", Toast.LENGTH_SHORT).show();
}
由于我已将图像加载到目标活动的ImageView中,因此我不再需要临时图像文件。如何从内部存储中删除此文件?我只有文件名tempfile_wip
,没有绝对路径。
答案 0 :(得分:0)
您可以使用File tmpBitmap = getFileStreamPath("tempfile_wip");
返回存储使用openFileOutput(String, int)
创建的文件的文件系统的绝对路径,并使用tmpBitmap.delete()