1

我正在从设备的本机摄像头捕获图像并使用 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);
    }
}
4

1 回答 1

1

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

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

于 2012-11-08T18:54:31.590 回答