我希望能够在不同的Activity之间传递我的图片。最初,我尝试使用图片的base64字符串来实现这一点。但是,这种方法只适用于小图片。虽然400kb的图片可以传输成功,但600kb的图片传输失败了。那么,有没有更好的方法呢?顺便说一下,我并没有将图片保存在本地,而是从服务器上获取图片,因此我没有真正的Drawable对象。
我希望能够在不同的Activity之间传递我的图片。最初,我尝试使用图片的base64字符串来实现这一点。但是,这种方法只适用于小图片。虽然400kb的图片可以传输成功,但600kb的图片传输失败了。那么,有没有更好的方法呢?顺便说一下,我并没有将图片保存在本地,而是从服务器上获取图片,因此我没有真正的Drawable对象。
如果你只有远程URL,那么你可以直接分享它,否则你可以将图片保存在本地媒体库中,然后分享它的本地URL。类似这样:
Bitmap bitmap = ...
String path = MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, "Image Description", null);
Uri uri = Uri.parse(path);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/jpeg");
intent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(intent, "Share Image"));
1 - 在发送方活动中:
Intent yourIntent = new Intent(YourActivity.this, DestinationActivity.class);
Bitmap bmp; // store the image in your bitmap
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 50, baos);
yourIntent.putExtra("yourImage", baos.toByteArray());
startActivity(yourIntent);
2 - 在您的接收器活动中
// parse the intent onCreate()
if(getIntent().hasExtra("yourImage")) {
ImageView iv = new ImageView(this);
Bitmap bmp = BitmapFactory.decodeByteArray(getIntent().getByteArrayExtra("yourImage"), 0, getIntent().getByteArrayExtra("yourImage").length);
iv.setImageBitmap(bmp);
}
此外,您还可以使用像Picasso或Glide这样的第三方库。我个人更喜欢Glide,因为它在性能方面比其他任何库都要好。