如何在android中将捕获的/画廊图像传递给下一个活动

dauxcl2d  于 2021-07-09  发布在  Java
关注(0)|答案(5)|浏览(370)

我想传递捕获的相机图像并从库中选择图像,图像应显示在下一个活动中,因为捕获的图像我的代码工作正常..但从库中选择图像活动中不显示图像。。
第一项活动

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
     if (resultCode == RESULT_OK) {
        if (requestCode == REQUEST_CAMERA) {

            Uri selectedImage = data.getData();
            String[] filePathColumn = {MediaStore.Images.Media.DATA};

            Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            //file path of captured image
            imagepath = cursor.getString(columnIndex); 
            //file path of captured image
            File f = new File(imagepath);
            String filename = f.getName();

            /*Toast.makeText(Contact.this, "Your Path:"+imagepath, 2000).show();
            Toast.makeText(Contact.this, "Your Filename:"+filename, 2000).show();*/
            cursor.close();
            //Log.i("image path", imagepath);
            Bitmap imageData = BitmapFactory.decodeFile(imagepath);
            // Bitmap imageData = null;
             imageData = (Bitmap) data.getExtras().get("data");

             Intent i = new Intent(this, Cam.class);
             i.putExtra("name", imageData );
             startActivity(i);
            //imageview.setImageBitmap(bit);
        }

        else if (requestCode == SELECT_FILE) {
                //Bitmap photo = (Bitmap) data.getData().getPath(); 

                Uri selectedImageUri = data.getData();
                imagepath = getPath(selectedImageUri, null);

                 // your bitmap
                //ByteArrayOutputStream bs = new ByteArrayOutputStream();
                Bitmap imageData = BitmapFactory.decodeFile(imagepath);                                                                                               
                imageData = (Bitmap) data.getExtras().get("data");
                Intent intent = new Intent(this, Cam.class);
                intent.putExtra("name", imageData );
                 startActivity(intent);

第二项活动

protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.cam);

      Bitmap bitmap  = getIntent().getExtras().getParcelable("name");
        ImageView view = (ImageView) findViewById(R.id.imageView1);
        view.setImageBitmap(bitmap); 

        }
nlejzf6q

nlejzf6q1#

您可以使用bundle传递给另一个活动。

vql8enpb

vql8enpb2#

Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);

在另一端取回它:

Intent intent = getIntent();
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
cotxawn7

cotxawn73#

用这个。

Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("path", imagepath);

在下一个活动中检索为

String image_path = getIntent().getStringExtra("path");
Bitmap bitmap = BitmapFactory.decodeFile(image_path);
imageview.setImageBitmap(bitmap);
pgpifvop

pgpifvop4#

如果您的设备中有图像,则可以传递图像的路径。而不是从路径显示。

3ks5zfa0

3ks5zfa05#

要启动另一个活动并接收返回的结果,请调用startactivityforresult()(而不是startactivity())。
在startactivityforresult中,传递图像uri和下一个上下文。
我认为这在你的情况下应该足够了。

相关问题