在另一个图像中捕获照片后,imageView会丢失图像

时间:2017-07-26 21:59:15

标签: android

我有两个用于拍摄照片的imageView。

mImageView1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(intent, CAMERA_REQUEST_CODE1);
                            }
    });




    mImageView2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(intent, CAMERA_REQUEST_CODE2);

        }
    });

以下活动结果:

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    try {

        if (requestCode==CAMERA_REQUEST_CODE1 && resultCode == RESULT_OK) {


            bitmap1 = (Bitmap) data.getExtras().get("data");



            SharedPreferences myPrefrence = getSharedPreferences("MyPreferences",MODE_PRIVATE);
            SharedPreferences.Editor editor = myPrefrence.edit();
            editor.putString("image1", encodeToBase64(bitmap1));
            editor.commit();


            String imageS = myPrefrence.getString("image1", encodeToBase64(bitmap1));
             decodedBitmap1 = decodeToBase64(imageS);

            Uri imageUri1 = bitmapToUriConverter(decodedBitmap1);
            imgRotation1 = getRotation(this, imageUri1);
            mImageView1.setRotation(imgRotation1);

            //COMPRESS
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            decodedBitmap1.compress(Bitmap.CompressFormat.JPEG, 10, out);

            mImageView1.setImageBitmap(decodedBitmap1);


            mImageView1.setSaveEnabled(true);
            mImageView1.setEnabled(false);
        }

        if (requestCode==CAMERA_REQUEST_CODE2 && resultCode == RESULT_OK) {


            bitmap2 = (Bitmap) data.getExtras().get("data");



            SharedPreferences myPrefrence = getSharedPreferences("MyPreferences",MODE_PRIVATE);
            SharedPreferences.Editor editor = myPrefrence.edit();
            editor.putString("image2", encodeToBase64(bitmap2));
            editor.commit();


            String imageS = myPrefrence.getString("image2", encodeToBase64(bitmap2));
            decodedBitmap2 = decodeToBase64(imageS);



            Uri imageUri2 = bitmapToUriConverter(decodedBitmap2);
            imgRotation2 = getRotation(this, imageUri2);
            mImageView2.setRotation(imgRotation2);

            //COMPRESS
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            decodedBitmap2.compress(Bitmap.CompressFormat.JPEG, 10, out);

            mImageView2.setImageBitmap(decodedBitmap2);


            mImageView2.setSaveEnabled(true);
            mImageView2.setEnabled(false);
        }

我使用mImageView1捕获图像并在其中显示始终没有问题。但是当我使用mImageView2捕获图像时,mImageView1有时(并非总是)会丢失图像。我已经尝试过SharedPreferences来保存图像,并在将图像放入图像视图之前压缩图像,但没有结果。知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

我想我自己找到了解决方案。

我设置为imageViews uris而不是位图

例如

mImageView1.setImageURI(imageUri1);