2015-09-15 11 views
3

Я использую мой телефон, чтобы захватить изображение в моем Ioinc App с помощью $ cordovaCapture.captureImage так:

$cordovaCapture.captureImage(options).then(function(imageData) { 

       var imagePath = "file://" + imageData[0].fullPath; 
       console.log (imagePath); 

       Utils.getBase64ImageFromInput(imagePath, function(err, base64Img) { 

        //Process the image string. 
        $scope.myprofile.profilepic = base64Img; 
        $scope.myprofile.$save().then(function() { 
         console.log ("Save Avatar Image Successful!") 
        }, function(error) { 
         console.log("Error:", error); 
        }); 
        Loader.hide(); 
       }); 
      }, function(err) { 
       console.log(err); 
       Loader.hide(); 
      }); 

Служба Utils.getBase64ImageFromInput это так:

getBase64ImageFromInput: function(input, callback) { 
     window.resolveLocalFileSystemURL(input, function(fileEntry) { 
      fileEntry.file(function(file) { 
        var reader = new FileReader(); 
        reader.onloadend = function(evt) { 
         callback(null, evt.target.result); 
        }; 
        reader.readAsDataURL(file); 
       }, 
       function() { 
        callback('failed', null); 
       }); 
     }, 
     function() { 
      callback('failed', null); 
     }); 
    } 

Это прекрасно работает. Но проблема в том, что образ - это способ сделать большой захват iPhone. Я хочу ограничить размер до 200x200 и качество, возможно, 0,8 JPG. Но я не могу найти никаких параметров в документе ngCordova, чтобы сделать именно это. Как изменить размер изображения base64 и оптимизировать его до обновления на моем сервере Firebase?

ответ

2

В этом плагине нет параметров ширины и высоты тегов. Поэтому я бы посоветовал использовать плагин камеры cordova. Обычно плагин камеры используется чаще, чем плагин для привязки к изображениям. Ссылка на плагин: http://ngcordova.com/docs/plugins/camera/. Как вы можете видеть, у него есть более широкий набор опций, таких как ширина и высота цели (означает, какой размер вам нужен после захвата изображения), библиотека или прямая камера, качество, тип кодирования, обрезка и т. Д. Здесь есть набор опций

var options = { 
     quality: 50, //0-100 
     destinationType: Camera.DestinationType.DATA_URL, //DATA_URL (returns base 64) or FILE_URI (returns image path) 
     sourceType: Camera.PictureSourceType.CAMERA, 
     allowEdit: true, //allow cropping 
     encodingType: Camera.EncodingType.JPEG, 
     targetWidth: 100, //what widht you want after capaturing 
     targetHeight: 100, 
     popoverOptions: CameraPopoverOptions, 
     saveToPhotoAlbum: false 
    }; 
$cordovaCamera.getPicture(options).then(function(imageData) { 
     var image = document.getElementById('myImage'); 
     image.src = "data:image/jpeg;base64," + imageData; 
    }, function(err) { 
     // error 
    }); 

Посмотрите link, чтобы узнать все доступные опции.

+0

Спасибо! Я попробую это вместо этого. –

Смежные вопросы