Search code examples
androidandroid-intentandroid-studioandroid-camera-intent

Blurred Image Issue in Imageview


I have implemented Camera via Intent and set that Image in Imageview which is appearing blurred, while the same Image appear's clear in ImageGallery. The code and related picture are as follows :

Image saved in SD CARD

Blurred image in Imageview

Activity Class :

   public class MainActivity extends ActionBarActivity {
   Button b1,b2;
   ImageView iv;

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

      b1=(Button)findViewById(R.id.button);
      iv=(ImageView)findViewById(R.id.imageView);

      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(intent, 0);
         }
      });
   }

   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      // TODO Auto-generated method stub
      super.onActivityResult(requestCode, resultCode, data);

      Bitmap bp = (Bitmap) data.getExtras().get("data");
      iv.setImageBitmap(bp);
   }

File is being saved in sdcard and also I retrive its URI sucessfully, but still imageview do not show this image or imageview disappear when camera click and return. Code are as follows -:

public class MainActivity extends Activity {

    static int TAKE_PIC =1;
    Uri outPutfileUri;
    ImageView mImageView;

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

        mImageView = (ImageView) findViewById(R.id.image);
    }


    public void CameraClick(View v) {

        Intent intent= new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        File file = new File(Environment.getExternalStorageDirectory(),
                "MyPhoto.jpg");
        outPutfileUri = Uri.fromFile(file);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, outPutfileUri);
        startActivityForResult(intent, TAKE_PIC);
    }

    Bitmap bitmap = null;

    @Override
    protected void onActivityResult(int requestCode, int resultCode,Intent data)
    {
        if (requestCode == TAKE_PIC && resultCode==RESULT_OK) {

            String uri = outPutfileUri.toString();
            Log.e("uri-:", uri);
             mImageView.setImageURI(Uri.parse(uri));
        }
}}

Please suggest me how to get path of clicked image and set it to imageview. I am new here.


Solution

  • Try This,

    public class MainActivity extends Activity {
    
        static int TAKE_PIC =1;
        Uri outPutfileUri;
        ImageView mImageView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            mImageView = (ImageView) findViewById(R.id.image);
        }
    
    
        public void CameraClick(View v) {
    
            Intent intent= new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            File file = new File(Environment.getExternalStorageDirectory(),
                    "MyPhoto.jpg");
            outPutfileUri = Uri.fromFile(file);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, outPutfileUri);
            startActivityForResult(intent, TAKE_PIC);
        }
    
        Bitmap bitmap = null;
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode,Intent data)
        {
            if (requestCode == TAKE_PIC && resultCode==RESULT_OK) {
    
                String uri = outPutfileUri.toString();
                Log.e("uri-:", uri);
                Toast.makeText(this, outPutfileUri.toString(),Toast.LENGTH_LONG).show();
    
                //Bitmap myBitmap = BitmapFactory.decodeFile(uri);
               // mImageView.setImageURI(Uri.parse(uri));   OR drawable make image strechable so try bleow also
    
                try {
                    bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), outPutfileUri);
                    Drawable d = new BitmapDrawable(getResources(), bitmap);
                    mImageView.setImageDrawable(d);
                } catch (IOException e) {
                    e.printStackTrace();
                }
    
    
            }
    }
    
    }
    

    Hope this will help you enjoy!!!!!