角度和离子相机功能不会保存照片

时间:2015-10-21 01:33:24

标签: android angularjs ionic-framework ionic

我有一个应用程序可以在用户同步应用程序时拍照并上传。但是,我拍照后它一直给我错误,并没有把它全部保存到手机上。 这是我的代码:

(function () {
'use strict';

var serviceId = 'camera';

angular.module('app').service(serviceId, ['$cordovaCamera', '$cordovaFile', '$q', function ($cordovaCamera, $cordovaFile, $q) {
    this.takePhoto = function () {

        if (window.Camera) {
            var options = {
                quality: 75,
                destinationType: Camera.DestinationType.FILE_URI,
                sourceType: Camera.PictureSourceType.CAMERA,
                allowEdit: false,
                encodingType: Camera.EncodingType.JPEG,
                targetWidth: 800,
                targetHeight: 800,
                saveToPhotoAlbum: true,
                correctOrientation: true
            };

            return $cordovaCamera.getPicture(options).then(function (imageData) {
                console.log("Photo Success: " + imageData);
                return imageData;
            }, function (err) {
                console.error("Error taking photo: " + JSON.stringify(err));
                throw err;
            });
        } else {
            var deferred = $q.defer();
            deferred.resolve("/img/sunrise.jpg");
            return deferred.promise;
        }
    }

}]);
})();

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

首先确保在项目中包含Camera和File插件。如果没有,请添加这两个插件,

cordova plugin add org.apache.cordova.camera

cordova plugin add org.apache.cordova.file

我为你做了一个小例子。我正在使用Ionic的ngCordova来实现相机功能。

<强>电脑板

$scope.photoSave = function() {
    if (window.cordova) {
        var options = {
            quality: 100,
            destinationType: Camera.DestinationType.FILE_URI,
            sourceType: Camera.PictureSourceType.CAMERA,
            encodingType: Camera.EncodingType.JPEG,
            cameraDirection: 1,
            saveToPhotoAlbum: true
        };
        $cordovaCamera.getPicture(options).then(function(imagePath) {
            $scope.imgURI = imagePath;
            //Grab the file name of the photo in the temporary directory
            var currentName = imagePath.replace(/^.*[\\\/]/, '');
            //Create a new name for the photo
            var d = new Date(),
                n = d.getTime(),
                newFileName = n + ".jpg";
            //Move the file to permanent storage
            $cordovaFile.moveFile(cordova.file.tempDirectory, currentName, cordova.file.dataDirectory, newFileName).then(function(success) {
                //success.nativeURL will contain the path to the photo in permanent storage, do whatever you wish with it, e.g:
                //createPhoto(success.nativeURL);

            }, function(error) {
                //an error occured
            });

        }, function(error) {
            //An error occured
        });
    }
};

<强> HTML

<ion-view>
    <ion-content>
        <button ng-click="photoSave()">Capture</button>
    </ion-content>
</ion-view>

Refer