使用base64显示从相机(Ionic / Cordova)拍摄的图像

时间:2016-08-26 03:50:28

标签: javascript angularjs image cordova ionic-framework

我正在使用离子框架,我遇到了一个小问题。我有一个名为' upload'的按钮。当我点击它时,我使用' $ cordovaCamera'拍照。我收到的图像为base64字符串,然后我有一个名为' $ scope.hold'的变量。它存储base64字符串(imageData)。

问题是我拍摄图像后立即弹出的图像模糊不清。我不确定错误是什么 - 我有' 100'作为'质量'在我的选项'变量。有人请指教?我知道有更好的方法来做到这一点而不是base64但我现在坚持这种方法。

在我的HTML文件中,我有:

<img id="pic" data-ng-src="data:image/jpeg;base64,{{hold}}" width="100%" />

我的javascript控制器看起来像:

$scope.upload = function() {
        var options = {
          quality: 100,
          destinationType: Camera.DestinationType.DATA_URL,
          sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
          allowEdit: true,
          encodingType: Camera.EncodingType.JPEG,
          targetWidth: 100,
          targetHeight: 100,
          popoverOptions: CameraPopoverOptions,
          saveToPhotoAlbum: false,
          correctOrientation:true
        };

        $cordovaCamera.getPicture(options).then(function(imageData) {

            alert("Got it!!");
            $scope.hold = imageData;


        }, function(err) {
            alert("We have an error: " + error );
        });
    };

提前致谢!

1 个答案:

答案 0 :(得分:0)

使用以下代码,图像模糊的主要原因是因为您将质量设置为100.更改质量并查看更改

var options = {
           quality : 75,
           destinationType : Camera.DestinationType.DATA_URL,
           sourceType : Camera.PictureSourceType.CAMERA,
           allowEdit : false, //To enable/disable the user editing in camera
           encodingType: Camera.EncodingType.JPEG,
           targetWidth: 640,
           targetHeight: 400,
           popoverOptions: CameraPopoverOptions,
           saveToPhotoAlbum: false
       };