从android中的本机相机获取模糊图像

时间:2012-11-08 06:11:38

标签: android

我正在从设备的原生相机捕捉图像并使用imageview在另一个活动中显示它。问题是在OnActivityResult方法中我得到了模糊的位图。我想得到原始尺寸图像的位图。任何人帮助我??提前谢谢。这是我的代码,我在onActivityResult方法中获取位图并将其保存到SD卡。图像从SD卡中变得模糊。

    camera.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            try {
                Intent mIntent=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(mIntent, CAMERA_PIC_REQUEST);
                WookAtMeStaticVariables.retakePic=false;
            } catch (Exception e) {

                clickmessage="OnClickevent Exception"+e.getMessage();
                showAlertDialogForCameraClickException(TakePic.this);

            }

        }
    });




        @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    try {
        if (requestCode == CAMERA_PIC_REQUEST && resultCode==RESULT_OK)

        {

               imageBitmap=(Bitmap)data.getExtras().get("data");
               imageBitmap = Bitmap.createScaledBitmap (imageBitmap,750,750, false);
               File file = new File(Environment.getExternalStorageDirectory(),"WookAtMepic"+System.currentTimeMillis()+".jpg");
               WookAtMeStaticVariables.mImageFilePath=file.getAbsolutePath();

               OutputStream outStream = null;
               try {
                    outStream = new FileOutputStream(file);
                    imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
                    outStream.flush();
                    outStream.close();
                   }

                   catch(Exception e)
                   {
                       e.printStackTrace();
                   }


            Intent afterTakePicIntent= new Intent(TakePic.this,AfterTakePic.class);
            startActivity(afterTakePicIntent);

            }

    } catch (Exception e) {

        resultMessage="OnResultevent Exception"+e.getMessage();
        showAlertDialogForCameraResultException(TakePic.this);
    }
}

1 个答案:

答案 0 :(得分:1)

它很容易被忽略,但是从ACTION_IMAGE_CAPTURE收到的图像将是一个小位图,除非您指定EXTRA_OUTPUT。请参阅注释here。这样做的原因是全尺寸图像可能会相当大,大约几MB,并且如同在intent-extra中那样传递大量数据是有问题的。

因此,您需要将临时文件的存储URI传递给它(或者您可以发布自己的内容提供者),然后调整其大小。