Cordova 相机插件,从图库获取完整图像路径 [ANDROID]
Cordova camera plugin, obtain full image path from gallery [ANDROID]
我正在尝试使用 cordova 相机插件从图库中获取图像,我就是这样做的:
navigator.camera.getPicture(onSuccess, onFail, {
quality: 50,
sourceType: Camera.PictureSourceType.SAVEDPHOTOALBUM,
destinationType: Camera.DestinationType.FILE_URI,
mediaType: Camera.MediaType.ALLMEDIA,
encodingType: Camera.EncodingType.JPEG
});
但在我的 'onSuccess' 函数中,我得到格式为的图像 URI:
"content://com.android.providers.media.documents/document/image%3A1509"
而且我想要包含图像完整路径的 URI,就像我使用相机时得到的一样:
"file:///storage/emulated/0/Pictures/IMG_20150710_124222.jpg"
阅读官方文档我看到我唯一应该做的就是将 属性 'DestinationType' 设置为 'FILE_URI',如您所见,它已经设置好了以上。
我做错了什么?
我找到了一个插件,可以将 'content://...' 格式的 URI 转换为完整的文件路径,它不是完美的解决方案,但它对我有用,插件是 cordova-plugin-filepath,我在 getCamera 函数的 onSuccess 回调中使用它:
function onSuccess(imageURI) {
window.FilePath.resolveNativePath(imageURI, function(result) {
// onSuccess code
imageURI = 'file://' + result;
. . .
}, function (error) {
// onError code here
}
}
您也可以在确认框的帮助下使用单个按钮完成此操作:
var txt=confirm("Select photo source");
if(txt==true){
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,destinationType: Camera.DestinationType.DATA_URL,saveToPhotoAlbum: true,sourceType: Camera.PictureSourceType.CAMERA});
}
else{
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,destinationType: Camera.DestinationType.DATA_URL,saveToPhotoAlbum: true,sourceType: Camera.PictureSourceType.PHOTOLIBRARY});
}
如果正常,则相机打开
否则,如果您单击取消,则画廊将打开
您还可以根据需要自定义确认按钮的确定-取消按钮。
我想你的代码中的问题就在这里
mediaType: Camera.MediaType.ALLMEDIA,
要么删除这条线,要么改成
mediaType: Camera.MediaType.PICTURE,
快乐编码....
我正在尝试使用 cordova 相机插件从图库中获取图像,我就是这样做的:
navigator.camera.getPicture(onSuccess, onFail, {
quality: 50,
sourceType: Camera.PictureSourceType.SAVEDPHOTOALBUM,
destinationType: Camera.DestinationType.FILE_URI,
mediaType: Camera.MediaType.ALLMEDIA,
encodingType: Camera.EncodingType.JPEG
});
但在我的 'onSuccess' 函数中,我得到格式为的图像 URI:
"content://com.android.providers.media.documents/document/image%3A1509"
而且我想要包含图像完整路径的 URI,就像我使用相机时得到的一样:
"file:///storage/emulated/0/Pictures/IMG_20150710_124222.jpg"
阅读官方文档我看到我唯一应该做的就是将 属性 'DestinationType' 设置为 'FILE_URI',如您所见,它已经设置好了以上。
我做错了什么?
我找到了一个插件,可以将 'content://...' 格式的 URI 转换为完整的文件路径,它不是完美的解决方案,但它对我有用,插件是 cordova-plugin-filepath,我在 getCamera 函数的 onSuccess 回调中使用它:
function onSuccess(imageURI) {
window.FilePath.resolveNativePath(imageURI, function(result) {
// onSuccess code
imageURI = 'file://' + result;
. . .
}, function (error) {
// onError code here
}
}
您也可以在确认框的帮助下使用单个按钮完成此操作:
var txt=confirm("Select photo source");
if(txt==true){
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,destinationType: Camera.DestinationType.DATA_URL,saveToPhotoAlbum: true,sourceType: Camera.PictureSourceType.CAMERA});
}
else{
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,destinationType: Camera.DestinationType.DATA_URL,saveToPhotoAlbum: true,sourceType: Camera.PictureSourceType.PHOTOLIBRARY});
}
如果正常,则相机打开 否则,如果您单击取消,则画廊将打开
您还可以根据需要自定义确认按钮的确定-取消按钮。
我想你的代码中的问题就在这里
mediaType: Camera.MediaType.ALLMEDIA,
要么删除这条线,要么改成
mediaType: Camera.MediaType.PICTURE,
快乐编码....