1

我有 Activity1,它有一个 ImaveView,包括图像预览。一旦我按下按钮,我就会从 Activity1 转到 Activity2。在 Activity2 中,我没有图像预览,但有一个选项按钮“保存 Activit1 的图像?” 是还是不是。

目前我正在以错误的方式做事,就像将图像保存在磁盘中然后从磁盘读回一样。但是有什么办法不保存图像我可以将一个 imageView 从 Activity1 传输到 Activity2 吗?

这是我在 Activity1 > ImageView 中获取图片的方法,然后需要将其移至 Activity2。任何想法?

public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      this.imageView = (ImageView)this.findViewById(R.id.picture);            
      Button photoButton = (Button) this.findViewById(R.id.capture_btn);      
      Button btnShareToEmail = (Button) this.findViewById(R.id.btnshare);
      btnShareToEmail.setOnClickListener(this);

      //photoButton.setOnClickListener(new View.OnClickListener() {
          //@Override
        //  public void onClick(View v) {
          //    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
            //  startActivityForResult(cameraIntent, CAMERA_REQUEST); 
         // }
      //});

      // without frozen
      new Handler().postDelayed(new Runnable() { public void run() { 
          Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
          startActivityForResult(cameraIntent, CAMERA_REQUEST);
      }}, 100);      
  }



  protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {  
        Bitmap photo = (Bitmap) data.getExtras().get("data"); 
        imageView.setImageBitmap(photo);



    }  
  }

编辑:

// 设置 - Activity1

Intent winShare = new Intent(getBaseContext(), Activity2.class);
winShare.putExtra("Title", "r2.jpg");
winShare.putExtra("image1", photo);         
//int image_link = getIntent().getIntExtra("image1");
startActivityForResult(winShare,0); 

// 获取 - 活动 2

    Bitmap bitmap = (Bitmap) getIntent().getParcelableExtra("image1"); // BITMAP_SHARED_KEY = "bitmap_shared_key"

    imageView.setImageBitmap(bitmap);
    // save it
    imageView.buildDrawingCache();
    Bitmap bm=imageView.getDrawingCache();
    OutputStream fOut = null;
    Uri outputFileUri;
    try {
      File root = new File(Environment.getExternalStorageDirectory() + File.separator + "MYAPPPPPPPPPS" + File.separator);
      root.mkdirs();
      File sdImageMainDirectory = new File(root, "myPicName.jpg");
      outputFileUri = Uri.fromFile(sdImageMainDirectory);
      fOut = new FileOutputStream(sdImageMainDirectory);
      bm.compress(Bitmap.CompressFormat.PNG, 100, fOut);
      fOut.flush();
      fOut.close();      
   } catch (Exception e) {
     Toast.makeText(this, "Error occured. Please try again later.",Toast.LENGTH_SHORT).show();
   }
4

3 回答 3

0

首先,您需要了解,当您以这种方式使用相机活动获取图像时,您将获得所拍摄图像的缩略图版本。为了获得必须保存的全尺寸图像,您可以查看我就此事撰写的这篇博文以获取更多信息:

将相机活动用于缩略图和全尺寸图像

现在对于您的问题,我认为最好的选择是将此图像保存到文件中(在指南中描述)并使用图像的字符串路径将额外的内容传递给以下活动。

于 2013-08-04T09:44:55.247 回答
0

有很多方法可以解决这个问题。这里有两种简单的方法:

首先,您可以阅读有关SharedPreferences的更多信息

第二,你可以把这个 Activity 的额外位图放到另一个 Activity 中,如下所示:

放额外:

intent.putExtra(BITMAP_SHARED_KEY, yourBitmap);
startActivity(intent);

您已共享的 getBitmap

Bitmap bitmap = (Bitmap) intent.getParcelableExtra(BITMAP_SHARED_KEY); // BITMAP_SHARED_KEY = "bitmap_shared_key"
于 2013-08-04T09:44:59.820 回答
0

简单的方法使用这个

  1. 第一个活动

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), 
    R.drawable.men_icon);
    Bundle extras = new Bundle();
    Intent intent=new Intent(FirstActivity.class,SecondActivity.class);
    extras.putParcelable("Bitmap", bitmap);
    intent.putExtras(extras);
    startActivity(intent);
    
  2. 第二次活动

     ImageView iv_photo=(ImageView)findViewById(R.id.iv_photo);
     Bundle extras = getIntent().getExtras();
     Bitmap bmp = (Bitmap) extras.getParcelable("Bitmap");
     iv_photo.setImageBitmap(bmp);
    
于 2017-03-17T11:45:15.957 回答