【发布时间】:2013-12-03 11:55:13
【问题描述】:
我正在开发一个 Android 应用程序,该应用程序将图像从相机或设备照片库上传到远程站点。后者我工作正常,我可以选择和上传。但是,我无法获取全尺寸图像并上传。这是我的代码:
// From onCreate
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
我有一个方法来处理 Activity 结果。这两个都处理从图库和相机中进行选择:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
String filepath = "";
Uri selectedImageUri;
if (resultCode == RESULT_OK) {
if (requestCode == CAMERA_PIC_REQUEST) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
// Gets real path of image so it can be uploaded
selectedImageUri = getImageUri(getApplicationContext(), photo);
}
else {
selectedImageUri = data.getData();
}
// Handle the upload ...
}
}
public Uri getImageUri(Context inContext, Bitmap inImage) {
String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}
这可行,但是图像很小并且不遵循存储图像的命名约定。我已经读过,要保存完整尺寸,我需要使用 putExtra 并在 cameraIntent 上传递 MediaStore.EXTRA_OUTPUT 并声明一个临时文件,因此我将我的意图代码调整如下:
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH.mm.ss");
camImgFilename = sdf.format(new Date())+".jpg";
File photo = new File Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), camImgFilename);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
但是,这会导致引发错误,指出“找不到源”。
不知道从哪里开始?
更新
似乎正在创建我的照片。应用程序关闭后,我可以使用文件资源管理器导航到目录并查看图像。我不确定是什么导致应用崩溃。
【问题讨论】:
-
检查这个。 stackoverflow.com/a/8543376/2105241,可以实现自定义摄像头。
标签: android image image-processing bitmap android-camera-intent