将位图发送到另一个活动的最佳方法是什么?没有设备上的商店?
如果我putExtra(Bitmap),我有缓冲区问题因为Bitmap太大了
现在我用它但速度太慢了:
Intent intent = new Intent(context, ImageScreen.class);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] bytes = stream.toByteArray();
intent.putExtra("image",bytes);
context.startActivity(intent);
答案 0 :(得分:1)
您说位图太大,在这种情况下,最佳解决方案是将Bitmap
写入应用的私有存储中,然后将文件路径发送到下一个活动。将位图写入文件并检索文件路径的代码如下
public String createBitmapFile(Bitmap bitmap) {
String fileName = "image";
try {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, bytes);
FileOutputStream fo = openFileOutput(fileName, Context.MODE_PRIVATE);
fo.write(bytes.toByteArray());
fo.close();
} catch (Exception e) {
fileName = null;
}
return fileName;
}
然后在下一个活动中,您可以执行类似
的操作Bitmap bitmap = BitmapFactory.decodeStream(context
.openFileInput(fileName));
要稍后删除该文件,您只需使用。
if(activity.deleteFile(imageName))
Log.i(TAG, "Image deleted");