【问题标题】:Blurred Image Issue in ImageviewImageview 中的图像模糊问题
【发布时间】:2018-07-22 12:39:06
【问题描述】:

我已经通过 Intent 实现了相机,并在 Imageview 中设置了看起来模糊的图像,而在 ImageGallery 中相同的图像看起来很清晰。代码及相关图片如下:

Image saved in SD CARD

Blurred image in Imageview

活动类:

   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);
   }

文件正在保存在 sdcard 中,并且我成功地检索了它的 URI,但是当相机单击并返回时,仍然 imageview 不显示此图像或 imageview 消失。代码如下-:

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));
        }
}}

请建议我如何获取点击图像的路径并将其设置为 imageview。我是新来的。

【问题讨论】:

    标签: android android-intent android-studio android-camera-intent


    【解决方案1】:

    首先,图像是模糊的,因为意图数据只包含图像的缩略图。

    您必须将图像保存在内部/外部存储中,然后再获取它。

    请随意查看有关相机图像的 android 开发者文档:

    Android Developers

    这个较旧的 SO 答案解释了如何在保存后检索完整尺寸的图像:

    Android get full size image from camera

    【讨论】:

    • 如果应用崩溃,请将 stackstrace 复制到您的问题中,以便我们查看。
    • 您正试图从“数据”缩略图中获取 uri,这将永远无法正常工作。您必须按照我链接的 android 开发人员教程正确保存在可访问目录中,并在捕获结果时访问该目录并检索它。
    • 单行代码无法完成之前链接的教程中的其余代码,developer.android.com/intl/es/training/camera/photobasics.html。必须先准备好相机,取回后解码。
    【解决方案2】:

    试试这个,

    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();
                }
    
    
            }
    }
    
    }
    

    希望这会帮助你享受!!!!!!

    【讨论】:

    • 你能描述一下是什么问题吗?
    • 确实有帮助。谢谢
    猜你喜欢
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2011-03-18
    相关资源
    最近更新 更多