2017-02-27 73 views
6

Mam następujący kod. To prawie działa dla większości. Chciałabym złapać ludzi z brzydkimi aparatami, a niektóre, jak ostrzec ich, że ich zdjęcia będą śmierdziały. (używając "cordova-plugin-camera" wersja 2.3.0)Jak sprawdzić zdjęcia w niskiej rozdzielczości podczas korzystania z wtyczki kamery cordova?

  var cameraOpts = { 
       quality: 100, 
       // destinationType: Camera.DestinationType.FILE_URI, 
       destinationType: Camera.DestinationType.DATA_URL, 
       sourceType: $scope.sourceType, 
       allowEdit: false, 
       encodingType: Camera.EncodingType.JPEG, 
       // popoverOptions: CameraPopoverOptions, 
       targetWidth: 186, 
       targetHeight: 1024, 
       saveToPhotoAlbum: true, 
       correctOrientation: true 
      }; 

      $cordovaCamera.getPicture(cameraOpts).then(function(imageData) { 
       var image = "data:image/jpeg;base64," + imageData; 
       $scope.setUpImage(index,image); 

      }, function(err) { 
       // error 
       $scope.showAlert('Warning!', 'Camera cancelled!'); 
      }); 

Wszelkie pomysły będą mile widziane. Szukam sposobu na robienie zdjęć w niskiej rozdzielczości i przesyłam wiadomość do użytkownika.

Odpowiedz

0

Cordova wtyczki kamera zapewnienia jakości opcji aparatu ale nie dostarcza żadnych informacji na temat rozdzielczości (domyślnie 100) (enter link description here)

+0

Moja jakość jest ustawiona na 100, a czasami zdjęcia są nadal niewyraźne. Zakładam, że zależy to od kamery telefonu użytkownika. – Kirby

+0

100 jest domyślną wartością w Androidzie, nawet jeśli zdasz 50, android nie pozwala na próbkowanie obrazu. – taranjeetsapra

+0

Co powiesz na zdobycie obrazu .. Czy istnieje sposób sprawdzenia, czy obraz jest zamazany? – Kirby

0

należy utworzyć obiekt obraz (jest to standardem HTML5 API)

Odpowiedni fragment skopiowany z tej odpowiedzi:

HTML5 - how to get image dimension

od plugin doc: „obraz jest przekazywany do succe ss zwrotna jako base64 zakodowany ciąg, lub jako adres do pliku obrazu”

przypadku wybrania formatu base64 we wtyczce aparatu, dane URI byłoby

'data:image/jpg;base64,' + imageData 

Jednak doc wtyczki zaleca format pliku, który zwróci plik URL, który można przypisać bezpośrednio do image.src

var image = new Image(); 
     image.onload = function(evt) { 
      var width = this.width; 
      var height = this.height; 
      alert (width); // will produce something like 198 
     }; 

     //here is where you pass the camera data to create the image 
image.src = imageData; 

Jak widać, metoda jest asynchroniczne, można owinąć je w Promise lub emitują zdarzenie, kiedy obraz ma został załadowany i masz szerokość x wysokość