我正在尝试在ionic angular.js中使用带有cordova app的相机插件。我的问题是,当我得到图片时它给了我一个图像的url而不是base64字符串 我需要base64字符串。 在Services.js中
.factory('Camera', function($q) {
return {
getPicture: function(options) {
var q = $q.defer();
navigator.camera.getPicture(function(result) {
q.resolve(result);
}, function(err) {
q.reject(err);
}, options);
return q.promise;
}
}
});
我上面的用户代码返回
文件:///storage/emulated/0/Android/data/com.example.app/cache/1313513121.jpg
但我想要base64字符串,因为我将它发送到服务器以将图像保存在服务器中 在Controller.js中
$scope.AddImage = function () {
var options = {
quality : 75,
targetWidth: 200,
targetHeight: 200,
sourceType: 1
};
Camera.getPicture(options).then(function(imageData) {
alert(imageData);
var item={
image: imageData
}
Pictures.push(item);
$scope.Photos = Pictures;
}, function(err) {
console.log(err);
});
}
我在上面写了代码。我该如何解决这个问题
提前致谢
答案 0 :(得分:1)
在destinationType
上使用值 DATA_URL
的 [ cameraOptions ]
选项参数。
navigator.camera.getPicture(cameraSuccess,cameraError,[ cameraOptions]);
选项destinationType: Camera.DestinationType.DATA_URL
将允许您拍摄照片并检索Base64编码的图像。默认设置为destinationType: Camera.DestinationType.FILE_URI
,它将检索图像文件位置。
您可以使用一般代码示例来调整现有代码。
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
destinationType: Camera.DestinationType.DATA_URL
});
function onSuccess(imageData) {
var image = document.getElementById('myImage');
image.src = "data:image/jpeg;base64," + imageData;
}
function onFail(message) {
alert('Failed because: ' + message);
}
文档here