shiv / shim / giả
Nếu (các) hình ảnh của bạn đã được tải (hoặc không), "công cụ" này có thể có ích:
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);
}}
);
.. nhưng tại sao?
Điều này có lợi thế là sử dụng dữ liệu hình ảnh "đã được tải", do đó không cần thêm yêu cầu. Aditionally nó cho phép người dùng cuối (lập trình viên như bạn) quyết định CORS và / hoặc mime-type
và quality
-HOẶC- bạn có thể bỏ qua những lập luận / thông số như mô tả trong MDN đặc điểm kỹ thuật ở đây .
Nếu bạn đã tải mã JS này (trước khi cần), thì việc chuyển đổi sang dataURL
đơn giản như:
ví dụ
HTML
<img src="/yo.jpg" onload="console.log(this.toDataURL('image/jpeg'))">
JS
console.log(document.getElementById("someImgID").toDataURL());
Dấu vân tay GPU
Nếu bạn lo lắng về "tính chính xác" của các bit thì bạn có thể thay đổi công cụ này cho phù hợp với nhu cầu của bạn như được cung cấp bởi câu trả lời của @ Kaiido.