Je travaille sur une application Cordova windows10 où je capture des images comme 'jpg' en utilisant (navigator.camera.getPicture(resolve, reject, {...encodingType: 0,...}
), déplacez-le à un autre emplacement en changeant l'extension en '.png 'et essaie actuellement de le redimensionner. Cependant, lorsque j'essaie de charger l'image, celle-ci ne charge pas mais lance DOM7009: Unable to decode image at url: '.../myimage.png' to MIME 'image/png'
.Image.onload ne fonctionne pas pour les images .jpg changé en .png
Cela fonctionne parfaitement si l'image a été capturée comme '.png' mais pas si l'image était à l'origine un '.jpeg' et l'extension a été changée en '.png'. Je fais les choses suivantes avant d'essayer de charger l'image.
let canvas = document.createElement('canvas');
let ctx = canvas.getContext('2d');
let image = new Image();
image.src = fileSystemPath + imageName // I get : ms-appdata:///local/randomgeneratedID.png
image.onload = function() {
...
ctx.drawImage(image, 0, 0, myHeight, myWidth);
callback(canvas.toDataURL("image/png", 0.9))
...
}
Le problème est que l'image ne se charge pas du tout. Je console.logged juste à l'intérieur de la fonction image.onload
et il n'apparaît pas. Je ne sais pas pourquoi il charge le fichier '.png' mais pas le fichier '.jpg' renommé '.png'.
Merci pour la réponse. Le .png est plus petit que l'original .jpg que j'ai capturé (j'utilise la méthode 'moveTo()' de Cordova pour déplacer le fichier). J'affecte le chemin complet à image.src avant de faire l'image.onload qui fonctionne bien sur iOS cependant. Comme vous l'avez dit, j'ai essayé d'assigner le src après le chargement de l'image, mais l'application ne peut malheureusement pas charger d'anciennes images dans l'application et se bloque. –
Le redimensionnement se produit après le chargement de l'image (ce qui ne se produit malheureusement pas) en dessinant l'image chargée dans un contexte de canevas. Je fais ensuite le 'getDataUrl'thing pour obtenir la chaîne Base64 à partir de l'URL de l'image –
vous avez écrit" l'application ne peut malheureusement pas charger d'anciennes images dans l'application et se bloque ". Donc, cela fonctionne bien pour les nouvelles images que vous capturez? Et que voulez-vous dire par "crash"? – curveball