shiv / shim / sham
Se le tue immagini sono già state caricate (o meno), questo "strumento" potrebbe tornare 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);
}}
);
.. ma perché?
Ciò ha il vantaggio di utilizzare i dati di immagine "già caricati", quindi non è necessaria alcuna richiesta aggiuntiva. Aditionally permette l'utente finale (programmatore come te) decidere le CORS e / o mime-type
e quality
OPPURE si può lasciare fuori questi argomenti / parametri come descritto nella MDN specifiche qui .
Se hai caricato questo JS (prima di quando è necessario), la conversione in dataURL
è semplice come:
esempi
HTML
<img src="/yo.jpg" onload="console.log(this.toDataURL('image/jpeg'))">
JS
console.log(document.getElementById("someImgID").toDataURL());
Fingerprinting GPU
Se sei preoccupato per la "precisione" dei bit, puoi modificare questo strumento in base alle tue esigenze, come fornito dalla risposta di @ Kaiido.