2016-10-09 4 views
1

Ich baue eine App mit Cordova/Ionic. Der Benutzer kann seine Galerie-Fotos bearbeiten, die dann in der App angezeigt werden.canvas.toDataURL funktioniert nicht auf Android> 4 Geräte (aber auf Android 2)

Das Problem, das ich im Moment habe, ist, dass nach der Manipulation die Bilder nicht auf Android> 4 Geräten (Android 4, Android 5, Android 6, etc.) angezeigt werden. Es ist nur ein "Bild nicht gefunden" -Bild sichtbar. Aber alles funktioniert wie erwartet auf Android 2.x-Geräten.

Gibt es signifikante Änderungen zwischen diesen Versionen?

Die Manipulation erfolgt mit this plugin.

Mein Code sieht wie folgt aus (index.html)

<img src="{{!!image.img11 ? image.img11.src : 'img/layout/placeholder.png'}}" ng-cloak> 

App.js

 navigator.camera.getPicture(onSuccess, onFail, 
     { 
     quality: 30, 
     destinationType: Camera.DestinationType.FILE_URI, 
     sourceType: Camera.PictureSourceType.PHOTOLIBRARY, 
     targetWidth: imagePickerWidth, 
     targetHeight: imagePickerHeight, 
     encodingType: Camera.EncodingType.PNG, 
     allowEdit: false 
     }); 

     function onSuccess(imageURI) { 
     self.crop(resolve, reject, scope, imageURI, type, width, height, tabs); 

     /* JR-CROP MANIPULATION */ 

     scope.image.img11 = new Image(); 
     scope.image.img11.src = canvas.toDataURL("image/png"); 
     } 

Antwort

0

Ok, es, dass größere auf Android scheint als 5 (5,6 , 7) besteht ein Bedarf nach einem security-policy in dem header.

Fügen Sie einfach die folgende:

<head> 
<meta http-equiv="Content-Security-Policy" content="img-src 'self' data:;"> 
... 
</head> 

Dies ermöglicht base64 codierte Bilder angezeigt werden.

Verwandte Themen