shiv / shim / sham
Wenn Ihr(e) Bild(er) bereits geladen sind (oder auch nicht), kann dieses "Werkzeug" sehr nützlich sein:
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);
}}
);
aber warum?
Dies hat den Vorteil, dass die "bereits geladenen" Bilddaten verwendet werden, so dass keine zusätzliche Anforderung erforderlich ist. Darüber hinaus kann der Endbenutzer (Programmierer wie Sie) entscheiden, welche CORS und/oder mime-type
y quality
-Oder- Sie können diese Argumente/Parameter weglassen, wie es im Abschnitt MDN Spezifikation aquí .
Wenn Sie dieses JS geladen haben (bevor es benötigt wird), dann wird die Konvertierung in dataURL
ist so einfach wie:
Beispiele
HTML
<img src="/yo.jpg" onload="console.log(this.toDataURL('image/jpeg'))">
JS
console.log(document.getElementById("someImgID").toDataURL());
GPU-Fingerprinting
Wenn Sie sich Sorgen um die "Genauigkeit" der Bits machen, können Sie dieses Werkzeug an Ihre Bedürfnisse anpassen, wie in der Antwort von @Kaiido beschrieben.