Android - 快速将位图传递给活动的好方法

时间:2015-10-19 21:00:19

标签: android android-intent android-activity bitmap

将位图发送到另一个活动的最佳方法是什么?没有设备上的商店
如果我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);

1 个答案:

答案 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");