作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的代码中,我在位图上得到 null,但图像创建成功并且 uri 很好,但 BitmapFactory.decodeFile() 返回 null。
我使用了下面的代码 fragment :
public class CameraImage extends Fragment {
private static final int TAKE_PHOTO_CODE = 1888;
Button button;
private Uri fileUri1,fileUri;
ImageView imageView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.camera_image,
container, false);
button = (Button) rootView.findViewById(R.id.button);
imageView = (ImageView) rootView.findViewById(R.id.imageview);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
fileUri1 = getOutputMediaFileUri();
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(cameraIntent, TAKE_PHOTO_CODE);
}
});
return rootView;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == TAKE_PHOTO_CODE) {
if (resultCode == Activity.RESULT_OK) {
BitmapFactory.Options options;
try {
Bitmap bitmap = BitmapFactory.decodeFile(pathname);
showDialog(bitmap, 1);
} catch (OutOfMemoryError e) {
try {
options = new BitmapFactory.Options();
options.inSampleSize = 2;
Bitmap bitmap = BitmapFactory.decodeFile(pathname, options);
imageView.setImageBitmap(bitmap);
} catch (Exception e2) {
Log.e("Camera", "" + e2 + " " + e);
}
}
}
}
} }
public Uri getOutputMediaFileUri() {
return Uri.fromFile(getOutputMediaFile());
}
private static File getOutputMediaFile() {
File mediaStorageDir = new File(
Environment
.getExternalStoragePublicDirectory(MyApplication.getAppContext().getFilesDir().getAbsolutePath()),
IMAGE_DIRECTORY_NAME);
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d(IMAGE_DIRECTORY_NAME, "Oops! Failed create "
+ IMAGE_DIRECTORY_NAME + " directory");
return null;
}
}
// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",
Locale.getDefault()).format(new Date());
File mediaFile;
try {
mediaFile = File.createTempFile(
"IMG_" + timeStamp,
".jpg",
mediaStorageDir
);
} catch (Exception e) {
Log.e("Camera", "" + e);
mediaFile = new File(mediaStorageDir.getPath() + File.separator
, "IMG_" + timeStamp + ".jpg");
}
return mediaFile;
}
在上面的代码中,我在 onActivityResult 中的位图上得到 null,但我从该图像中得到了 uri,该位置存在。
最佳答案
我们可以通过相机获取两种类型的图像:
1) 在 onActivityResult 中使用以下代码生成缩略图:
Bitmap photo = (Bitmap) data.getExtras().get("data");
Log.i(TAG, "" + photo + " / " + data.getExtras().get("data") + " / " + data.getData());
showDialog(photo, 1);
2) 通过在 onActivityResult 中使用以下代码获得完整质量的图像:
BitmapFactory.Options options;
options = new BitmapFactory.Options();
options.inSampleSize = 2;
Bitmap bitmap = BitmapFactory.decodeFile(pathname, options);
showDialog(bitmap, 1);
3)使用第三方轻松舒适:
编译“com.mindorks:paracamera:0.2.2”
关于java - 如何从Android中的fragment中获取相机图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42917627/
我是一名优秀的程序员,十分优秀!