Shiv / Shim / Sham
Jeśli twoje obrazy są już załadowane (lub nie), to „narzędzie” może się przydać:
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);
}}
);
.. ale dlaczego?
Ma to tę zaletę, że wykorzystuje „już załadowane” dane obrazu, więc nie jest wymagane dodatkowe żądanie. Aditionally że pozwala użytkownikowi końcowemu (programista jak ty) decyduje się CORS i / lub mime-type
i quality
-LUB- można pominąć te argumenty / parametry opisane w MDN specyfikacji tutaj .
Jeśli masz ten JS załadowany (przed, kiedy jest potrzebny), wówczas konwersja do dataURL
jest tak prosta, jak:
przykłady
HTML
<img src="/yo.jpg" onload="console.log(this.toDataURL('image/jpeg'))">
JS
console.log(document.getElementById("someImgID").toDataURL());
Odcisk cyfrowy GPU
Jeśli obawiasz się o „dokładność” bitów, możesz zmienić to narzędzie, aby dostosować je do swoich potrzeb, zgodnie z odpowiedzią @ Kaiido.