拍照后设置缩略图到ImageView
Set thumbnail to ImageView after taking the picture
我正在尝试开发一个应用程序(使用 master/detail 流模板),在详细信息片段中有一个 ImageView 显示相机拍摄的图像。
对于此选项,我在 ActionBar 中添加了一个按钮,用于打开一个对话框并询问用户是否希望使用相机添加图像。所以对于这个选项,我做了这两个方法,当用户点击确定时调用。但是,(在这里我现在犯了很大的错误)我对如何在让我的 ImageIcon 显示从相机检索到的缩略图结束时调用 onActivityResult() 一无所知。 (如 developer.android 教程所示)
如果你们中有人知道我做错了什么,我会很高兴听到你们能给我的所有解决方案,因为我无法在任何地方找到解决这个问题的方法。
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
onActivityResult(REQUEST_IMAGE_CAPTURE, RESULT_OK, takePictureIntent);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
ImageView mImageView = (ImageView) findViewById(R.id.imageView1);
mImageView.setImageBitmap(imageBitmap);
}
}
非常感谢!!!
您必须根据 onActivityResult 中收到的位图创建缩放位图。您将获得有关如何创建缩放位图的信息 Here
您可以根据需要设置宽度和高度
imageBitmap = Bitmap.createScaledBitmap(realImageBitmap, final_width, final_height, false);
imageView.setImageBitmap(imageBitmap);
您不必显式调用 onActivityResult。当 child/successor activity 立即完成其任务时,在父 activity 中调用 onActivityResult 方法。因此,当您的图像拍摄 activity 将完成任务时,它会自动调用一个 "requestCode" 和图像数据(如果您的图像拍摄 activity 拍摄一张照片,否则它将为空)。
有关 onActivityResult 的更多详细信息,请参阅 here.
要将缩略图设置为图像视图,您可以按以下方式执行此操作。
Bitmap photo = (Bitmap) data.getExtras().get("data");
imageView.setImageBitmap(photo);
你可以看到这个tutorial关于如何使用意图拍摄图像。
快乐编码
我正在尝试开发一个应用程序(使用 master/detail 流模板),在详细信息片段中有一个 ImageView 显示相机拍摄的图像。
对于此选项,我在 ActionBar 中添加了一个按钮,用于打开一个对话框并询问用户是否希望使用相机添加图像。所以对于这个选项,我做了这两个方法,当用户点击确定时调用。但是,(在这里我现在犯了很大的错误)我对如何在让我的 ImageIcon 显示从相机检索到的缩略图结束时调用 onActivityResult() 一无所知。 (如 developer.android 教程所示)
如果你们中有人知道我做错了什么,我会很高兴听到你们能给我的所有解决方案,因为我无法在任何地方找到解决这个问题的方法。
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
onActivityResult(REQUEST_IMAGE_CAPTURE, RESULT_OK, takePictureIntent);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
ImageView mImageView = (ImageView) findViewById(R.id.imageView1);
mImageView.setImageBitmap(imageBitmap);
}
}
非常感谢!!!
您必须根据 onActivityResult 中收到的位图创建缩放位图。您将获得有关如何创建缩放位图的信息 Here
您可以根据需要设置宽度和高度
imageBitmap = Bitmap.createScaledBitmap(realImageBitmap, final_width, final_height, false);
imageView.setImageBitmap(imageBitmap);
您不必显式调用 onActivityResult。当 child/successor activity 立即完成其任务时,在父 activity 中调用 onActivityResult 方法。因此,当您的图像拍摄 activity 将完成任务时,它会自动调用一个 "requestCode" 和图像数据(如果您的图像拍摄 activity 拍摄一张照片,否则它将为空)。 有关 onActivityResult 的更多详细信息,请参阅 here.
要将缩略图设置为图像视图,您可以按以下方式执行此操作。
Bitmap photo = (Bitmap) data.getExtras().get("data");
imageView.setImageBitmap(photo);
你可以看到这个tutorial关于如何使用意图拍摄图像。
快乐编码