我正在从设备的原生相机捕捉图像并使用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);
}
}
答案 0 :(得分:1)
它很容易被忽略,但是从ACTION_IMAGE_CAPTURE收到的图像将是一个小位图,除非您指定EXTRA_OUTPUT。请参阅注释here。这样做的原因是全尺寸图像可能会相当大,大约几MB,并且如同在intent-extra中那样传递大量数据是有问题的。
因此,您需要将临时文件的存储URI传递给它(或者您可以发布自己的内容提供者),然后调整其大小。