在新活动中显示捕获的图像

时间:2016-02-08 08:09:34

标签: android

我是Android新手并构建了一个小应用程序,可以从相机中拍照并将其保存到图库中。

这是捕获图像的功能。

private void onCaptureImageResult(Intent data) {
        Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        thumbnail.compress(Bitmap.CompressFormat.JPEG, 90, bytes);

        File destination = new File(Environment.getExternalStorageDirectory(),
                System.currentTimeMillis() + ".jpg");

        FileOutputStream fo;
        try {
            destination.createNewFile();
            fo = new FileOutputStream(destination);
            fo.write(bytes.toByteArray());
            fo.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

这是activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="5dp" >

        <Button
            android:id="@+id/btnSelectPhoto"
            android:background="#149F82"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Select Photo" />
    </LinearLayout>



</LinearLayout>

我想在捕获图像时想要这样做我想在另一个活动(页面)上显示图像,而不是在具有捕获图像按钮的同一活动上。如何做到这一点。

提前致谢

5 个答案:

答案 0 :(得分:2)

您只需将路径传递给方法中的新活动。

Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("MyImagePath", destination.getAbsoluteFile());
startActivity(intent);

并在新活动中

File imgFile = new  File(filePath);

if(imgFile.exists()){

    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());

    ImageView myImage = (ImageView) findViewById(R.id.imageviewTest);

    myImage.setImageBitmap(myBitmap);

}

答案 1 :(得分:1)

简单,捕捉照片后,你的照片将被保存。现在,在活动结果方法中,您只需使用意图转到第二个活动。

在第二个Activity中,只需获取已保存图像的路径并将其设置为ImageView。

答案 2 :(得分:1)

<强> MainActivity

 String filePath;
    @Override
        protected void onCreate(Bundle savedInstanceState) {   
        ...
        }

    private void onCaptureImageResult(Intent data) {
            Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
            ByteArrayOutputStream bytes = new ByteArrayOutputStream();
            thumbnail.compress(Bitmap.CompressFormat.JPEG, 90, bytes);

      String fileName = System.currentTimeMillis() + ".jpg"

      filePath =  Environment.getExternalStorageDirectory().getAbsolutePath() + fileName;

      File destination = new File(filePath);

      ...
      }

      yourButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                Intent intent = new Intent(getApplicationContext(), AnotherActivity.class);
                intent.putExtra("filePath", filePath)
                startActivity(intent);

                }
            });

<强> AnotherActivity

String filePath;
    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

    Intent intent = this.getIntent();

    filePath = intent.getStringExtra("filePath");

    File imgFile = new  File(filePath);

    if(imgFile.exists()){

        Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());

        ImageView myImage = (ImageView) findViewById(R.id.imageviewTest);

        myImage.setImageBitmap(myBitmap);

        }
     }

答案 3 :(得分:0)

我假设您知道如何从意图中获取捕获的图像信息。

如果你不知道的话。谷歌它,你会发现很多解决方案。

check this one

您可以采用两种方式在下次激活时显示捕获图像。

1 =&gt; 启动您要在其中显示图片的新活动。并在onCreate方法中打开相机并从onActivityResult中的相机获取结果并显示图像。

2 =&gt; 在onActivityResult中打开相机和getIntent数据,并将此信息传递给下一个活动,并在onCreate方法中显示图片。

答案 4 :(得分:0)

以下是一个解决方案。您可以将捕获的位图传递给意图,然后启动新活动。像下面的这个。一旦从捕获中获取图像,就可以在onCaptureImageResult()中实现此逻辑。

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

然后,您可以按照以下步骤从意图中获取位图。并将图像设置为ImageView或使用它做其他事情。

    ImageView imgView = (ImageView) img.findViewById(R.id.myIMageView); /* Called inside OnCreate() using the parent View */
    Intent intent = getIntent();
    Bitmap bitmap = (Bitmap) intent.getParcelableExtra("MyImage");

我希望它可以帮到你。享受。