我正在创建一个应用程序,您可以点击按钮拍照,然后在拍照后我想在图像视图中显示它。
我使用此代码:
@Override
public void onActivityCreated (Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Button b = (Button) getView().findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
} catch(ActivityNotFoundException e){
Toast.makeText(getActivity(), "Your device does not have a camera", Toast.LENGTH_SHORT).show();
}
}
});
send = (Button) getView().findViewById(R.id.button2);
send.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "Uploading image...", Toast.LENGTH_LONG).show();
new uploadtoserver().execute();
}
});
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_PIC_REQUEST) {
if (data != null) {
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
ImageView image = (ImageView) getView().findViewById(R.id.imageView1);
//image.setImageBitmap(thumbnail);
send.setVisibility(Button.VISIBLE);
// CALL THIS METHOD TO GET THE URI FROM THE BITMAP
Uri tempUri = getImageUri(getActivity(), thumbnail);
// CALL THIS METHOD TO GET THE ACTUAL PATH
finalFile = new File(getRealPathFromURI(tempUri));
Bitmap bmImg = BitmapFactory.decodeFile(finalFile.toString());
image.setImageBitmap(bmImg);
System.out.println(finalFile);
}
}
}
这是imageview的xml部分
但它显示图像裁剪和丑陋(不是原始尺寸)
如何让它在imageview中显示照片的原始尺寸?
答案 0 :(得分:0)
Intent
extra中返回的图像数据是捕获图像的缩小版本,适用于缩略图。完整大小的图像将写入您在请求中作为EXTRA_OUTPUT
Uri传递的文件位置。如果你想使用完整的图像本身,你需要看看那里。
请注意,Android只保证其中一个,因此您传递EXTRA_OUTPUT
位置,同时查找“数据”字段中返回的结果这一事实将无法在所有设备上运行......这不是框架所保证的(docs for more info)。在给出时,您应该只希望从请求中显示的Uri中读取文件。如果没有在那里写入图像,那是因为相机应用程序无法访问您提供的Uri位置,它必须是到公共位置的有效路径(如外部存储,而不是应用程序专用内部存储)。