shiv / shim / sham
หากรูปภาพของคุณโหลดแล้ว (หรือไม่) เครื่องมือ "" นี้อาจมีประโยชน์:
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);
    }}
);
.. แต่ทำไม
นี่เป็นข้อได้เปรียบของการใช้ข้อมูลภาพที่ "โหลดแล้ว" ดังนั้นจึงไม่จำเป็นต้องมีคำขอพิเศษ Aditionally จะช่วยให้ผู้ใช้ปลายทาง (โปรแกรมเมอร์เช่นคุณ) ตัดสินใจธและ / หรือmime-typeและqualityคัดลอกคุณสามารถออกจากการขัดแย้งเหล่านี้ / พารามิเตอร์ที่อธิบายไว้ในMDNสเปคที่นี่
หากคุณโหลด JS นี้ (ก่อนหน้านี้เมื่อต้องการ) การแปลงdataURLเป็นไฟล์ง่ายๆนั้น:
ตัวอย่าง
HTML
<img src="/yo.jpg" onload="console.log(this.toDataURL('image/jpeg'))">
JS
console.log(document.getElementById("someImgID").toDataURL());
พิมพ์ลายนิ้วมือ GPU
หากคุณกังวลเกี่ยวกับ "ความแม่นยำ" ของบิตคุณสามารถแก้ไขเครื่องมือนี้เพื่อให้เหมาะกับความต้องการของคุณตามคำตอบของ @ Kaiido