#android #cordova #canvas #ionic-framework #todataurl
#Android #кордова #холст #ionic-framework #todataurl
Вопрос:
Я создаю приложение с помощью Cordova / Ionic. Пользователь может управлять своими фотографиями из галереи, которые затем отображаются в приложении.
Проблема, с которой я сталкиваюсь прямо сейчас, заключается в том, что после манипуляций изображения не отображаются на устройствах Android> 4 (Android 4, Android 5, Android 6 и т. Д.). Видно только изображение «изображение не найдено». Но все работает, как и ожидалось, на устройствах Android 2.x.
Есть ли какие-либо существенные изменения между этими версиями?
Манипуляции выполняются с помощью этого плагина.
Мой код выглядит следующим образом (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");
}
Ответ №1:
Хорошо, кажется, что на Android больше, чем 5 (5,6,7), существует необходимость security-policy
в index.html
header
.
Просто добавьте следующее:
<head>
<meta http-equiv="Content-Security-Policy" content="img-src 'self' data:;">
...
</head>
Это позволяет base64
отображать закодированные изображения.