Изменение Размера Растрового Изображения

У меня есть проблема, которая возникает, когда я щелкаю изображение с помощью Intent и запустить Android камеры. Изображение, которое я получаю через данные Intent, несет информацию об измененном растровом изображении. Возможно, у меня неправильное понимание, но, пожалуйста, предложите, что я могу сделать, чтобы исправить это. ImageView отображает то же изображение, которое я щелкнул, но очень размытое

Вот базовый код:

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
InputStream stream= null;
        super.onActivityResult(requestCode, resultCode, data);
        if(this.requestCode == requestCode && resultCode == RESULT_OK){
            try{
                //stream= getContentResolver().openInputStream(data.getData());
                Bundle extras= data.getExtras();
                Bitmap bitmap = (Bitmap) extras.get("data");
                imageHolder.setImageBitmap(bitmap);
            }
            catch (Exception ex){
                ex.printStackTrace();
            }
        }
    }

4 ответа

  1.        try{
                //stream= getContentResolver().openInputStream(data.getData());
                Bundle extras= data.getExtras();
                Bitmap bitmap = (Bitmap) extras.get("data");
                //set value Width=200, Height=200
                Bitmap resizedimg = Bitmap.createScaledBitmap(bitmap, Width, Height, true);
    
                imageHolder.setImageBitmap(resizedimg);
            }
            catch (Exception ex){
                ex.printStackTrace();
            }
    
  2. возможно, вам следует передать uri в камеру и получить изображение из нее, когда ActivityResult вместо bitmap

  3. попробовать это:

        public class MainActivity extends Activity {
    
        static int CAMERA_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(),
                    "Photo.jpg");
            outPutfileUri = Uri.fromFile(file);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, outPutfileUri);
            startActivityForResult(intent, CAMERA_TAKE_PIC);
        }
    
        Bitmap bitmap = null;
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode,Intent data)
        {
            if (requestCode == CAMERA_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();
                }
    
    
            }
    }
    
    }
    

    я думаю, что изображение размыто, потому что данные intent содержат только thumbnailизображение.вы можете сохранить изображение на внутренней / внешней памяти, а затем получить его.

  4. Изображение, вероятно, размыто, поскольку данные intent содержат только эскиз изображения. Необходимо сохранить изображение во внутреннем / внешнем хранилище, а затем получить его.Также ваш вопрос должен быть как получить полноразмерное изображение от камеры.
    Пройдите через этот документ https://developer.android.com/training/camera/photobasics.html .

    Вот как это должно быть сделано

    Intent i=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    File dir=
        Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
    
    output=new File(dir, "CameraContentDemo.jpeg");
    i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(output));
    
    startActivityForResult(i, CONTENT_REQUEST);
    

    Рефренс можно найти по этой ссылке.

    https://stackoverflow.com/a/32121829/3111083