我正在开发cordova移动应用程序,我需要在服务器上上传一个Image。我想将base64字符串发送到我的webapi,在那里我可以将base64转换为Image并将图像保存在服务器上。我在控制器中这样做$ cordovaCamera
$scope.takePicture = function () {
var options = {
quality: 75,
destinationType: Camera.DestinationType.DATA_URL,
sourceType: Camera.PictureSourceType.CAMERA,
allowEdit: true,
encodingType: Camera.EncodingType.JPEG,
targetWidth: 100,
targetHeight: 100,
popoverOptions: CameraPopoverOptions,
saveToPhotoAlbum: false,
correctOrientation: true
};
$cordovaCamera.getPicture(options).then(function (imageData) {
console.clear();
console.log(imageData);
$scope.imgURI = imageData;
$rootScope.ByteData = "data:image/jpeg;base64," + imageData;
}, function (err) {
var alertPopup = $ionicPopup.alert({
title: 'Invalid Image',
template: 'Please upload correct formated image!'
});
});
}
但每当我运行此代码时,我都会以特定网址的形式获得 imageData ,例如“blob:http%3A // localhost%3A4400 / f6c7fc38-a18f-484e-94d1-a52bb4e5fee2” ,在这种情况下如何获得base64正确的字符串。在我看来,我喜欢
<ion-view view-title="{{application.CompanyName}}">
<ion-nav-buttons side="primary">
<button class="button" ng-click="saveApplication()">
SAVE
</button>
<button class="button" ng-click="goBack()">
BACK
</button>
</ion-nav-buttons>
<ion-content ng-controller="AppDetailCtrl">
<img ng-show="imgURI !== undefined" width="343px" height="300px" ng-src="{{imgURI}}">
<img ng-show="imgURI === undefined" width="343px" height="300px" ng-src="http://placehold.it/300x300">
<button class="button" ng-click="takePicture()">Upload Picture</button>
</ion-content>
</ion-view>
答案 0 :(得分:2)
实际上我想将blob图像的url类型转换为base64字符串,而我正在丢失转换方法,如
function convertImgToBase64(url, callback, outputFormat) {
var canvas = document.createElement('CANVAS'),
ctx = canvas.getContext('2d'),
img = new Image;
img.crossOrigin = 'Anonymous';
img.onload = function () {
var dataURL;
canvas.height = img.height;
canvas.width = img.width;
ctx.drawImage(img, 0, 0);
dataURL = canvas.toDataURL(outputFormat);
callback.call(this, dataURL);
canvas = null;
};
img.src = url;
}
convertImgToBase64(imageData, function (base64Img) {
$rootScope.ByteData = base64Img;
});