Imageview中的模糊图像问题

时间:2015-12-02 08:38:35

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

我已经通过Intent实现了Camera,并将Imageview中的Image设置为模糊,而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,但是当相机点击并返回时,仍然没有显示图像或图像视图消失。代码如下 - :

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。我是新来的。

2 个答案:

答案 0 :(得分:4)

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

您必须将图像保存在内部/外部存储设备上,然后才能获取它。

随时查看有关相机图像的Android开发人员文档:

Android Developers

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

Android get full size image from camera

答案 1 :(得分:3)

试试这个,

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


        }
}

}

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