shiv / shim / sham
Si vos images sont déjà chargées (ou pas), cet "outil" peut être utile:
Object.defineProperty
(
HTMLImageElement.prototype,'toDataURL',
{enumerable:false,configurable:false,writable:false,value:function(m,q)
{
let c=document.createElement('canvas');
c.width=this.naturalWidth; c.height=this.naturalHeight;
c.getContext('2d').drawImage(this,0,0); return c.toDataURL(m,q);
}}
);
.. mais pourquoi?
Cela a l'avantage d'utiliser les données d'image "déjà chargées", donc aucune demande supplémentaire n'est nécessaire. De plus, cela permet à l'utilisateur final (programmeur comme vous) de décider du CORS et / ou mime-type
et quality
-OU- vous pouvez omettre ces arguments / paramètres comme décrit dans la spécification MDN ici .
Si vous avez chargé ce JS (avant qu'il ne soit nécessaire), la conversion en dataURL
est aussi simple que:
exemples
HTML
<img src="/yo.jpg" onload="console.log(this.toDataURL('image/jpeg'))">
JS
console.log(document.getElementById("someImgID").toDataURL());
Empreinte digitale du GPU
Si vous êtes préoccupé par la «précision» des bits, vous pouvez modifier cet outil en fonction de vos besoins, comme indiqué dans la réponse de @ Kaiido.