android - 从自定义相机拍摄和保存后如何将图片显示到 Activity 中

标签 android camera imageview

在我的应用程序中,我正在拍照,并且在压缩后成功将其保存在图库中。现在我想将它展示到其他 Activity 中,以便用户至少可以共享或查看它。那么我该怎么做。

以下是我保存图片的代码,保存后它显示广告,在 adClosed 事件上我想将拍摄的照片发送到其他 Activity ,我该怎么做。我的代码就是这样..

 File storagePath = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator + "MyAnimals");
        storagePath.mkdirs();
        String finalName = Long.toString(System.currentTimeMillis());

    //this snippet is saving image And I am showing ad after saving picture
  File myImage = new File(storagePath, finalName + ".jpg");

    String photoPath = Environment.getExternalStorageDirectory().getAbsolutePath() +"/" + finalName + ".jpg";

    try {
        FileOutputStream fos = new FileOutputStream(myImage);
        newImage.compress(Bitmap.CompressFormat.JPEG, 100, fos);

        fos.close();
        //refreshing gallery
        Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
        mediaScanIntent.setData(Uri.fromFile(myImage));
        sendBroadcast(mediaScanIntent);
    } catch (IOException e) {
        Toast.makeText(this, "Pic not saved", Toast.LENGTH_SHORT).show();
        return;
    }
    Toast.makeText(this, "Pic saved in: " + photoPath, Toast.LENGTH_SHORT).show();

    displayInterstitial();


         interstitial.setAdListener(new AdListener() {
        @Override
        public void onAdClosed() {
            Log.v("Add time");

       Intent intent = new Intent(CameraActivity.this,ShowCapturedImage.class);

       //Now How to send the saved picture to the image view of other activity?
            startActivity(intent);

            super.onAdClosed();
        }
    });

最佳答案

1) 将拍摄的图像路径放在 Intent 中

2) 在其他activity中获取路径并在imageview中设置

public static final int REQUEST_CODE_FROM_CAMERA = 112;
private Uri fileUri;
String image_path = "";

//从下面的函数中抓取图片

 private void fromCamera() {
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

            fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
            Log.d("FROM CAMERA CLICKED file uri", fileUri.getPath());
            intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);

            // start the image capture Intent
            startActivityForResult(intent, REQUEST_CODE_FROM_CAMERA);
        }

//On Activity结果存储图片路径

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_FROM_CAMERA
                && resultCode == Activity.RESULT_OK) {
            try {


                image_path = fileUri.getPath();


            } catch (NullPointerException e) {
                e.printStackTrace();
            }

        }
}

点击任意按钮

Intent iSecond=new Intent(FirstActivity.this,SecondActivity.class);
iSecond.putExtra("image_path",image_path);
startActivity(iSecond);

在第二个 Activity onCreate() 中

 Bundle extras = intent.getExtras();
    if(extras != null)
    String image_path = extras.getString("image_path");

从这个图片路径,可以获取图片并设置为imageview

ImageView iv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        iv = (ImageView) findViewById(R.id.imageView1);

        File imgFile = new File("/storage/emulated/0/1426484497.png");

        if (imgFile.exists()) {

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

            iv.setImageBitmap(myBitmap);

        }

    }

关于android - 从自定义相机拍摄和保存后如何将图片显示到 Activity 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29302031/

相关文章:

java - 从 sql 填充微调器并使结果唯一

android - 删除在开发 Android 中安装新版本应用程序时的共享首选项

android - 如何使相机仅聚焦在矩形内部并仅在 flutter 中读取矩形内部的文本?

math - 使用 Eigen 计算 2D 相机的模型 View 矩阵

android - 如何在 Android 中显示 Windows 8 风格的图像

android:将灰度过滤器设置为imageView

android - 从外部下载Gradle依赖关系,而无需按实现名称进行gradle

javascript - css - fontello 旋转器图像 CSS 集成

iphone - 如何使用 AVFoundation 为逐帧生成的视频设置方向?

java - 将View动画直接应用到Drawable而不是整个View