如何将图像发送到Android中的其他活动

如何将图像发送到Android中的其他活动,android,android-intent,android-activity,Android,Android Intent,Android Activity,您可以使用intent将byteArray发送到其他活动 import android.content.Intent; import android.graphics.Bitmap; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; i

您可以使用intent将byteArray发送到其他活动

import android.content.Intent;
import android.graphics.Bitmap;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import java.io.ByteArrayOutputStream;


public class MainActivity extends ActionBarActivity {

    Bitmap bitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ImageView i = (ImageView) findViewById(R.id.iv_img);
    i.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ByteArrayOutputStream bStream = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, bStream);
            byte[] byteArray = bStream.toByteArray();

            Intent anotherIntent = new Intent(MainActivity.this, anotherActivity.class);
            anotherIntent.putExtra("image", R.drawable.img);
            startActivity(anotherIntent);

        }
    });
}
现在,您必须通过另一个活动接收此bytearray

Intent anotherIntent = new Intent(MainActivity.this, anotherActivity.class);

anotherIntent.putExtra("image", byteArray);

startActivity(anotherIntent);

传递映像的路径并使用另一个活动中的路径检索映像。将文件写入文件系统(SD卡)并将路径传递到另一个活动,在下一个活动中读取文件并删除本地路径副本(如果不再需要)。这是一个可绘制文件,您可以在另一个活动中访问它。请尝试base64。对于编码和解码图像。如果它是一个静态资源,你不需要传递任何东西,你可以在另一个活动中访问它,如@Raghunandan所说。如果您的案例不同,您可以尝试使用Parcelable或类似工具序列化此数据,然后将其传递给指定的活动。我不推荐这种方法,因为它效率低下。只需将此图像保存在磁盘上,并像前面所说的那样以字符串形式传递到图像的路径。
Bitmap bmp;

byte[] byteArray = getIntent().getByteArrayExtra("image");

bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

imageview.setImageBitmap(bmp);