我有一個Angular應用程序,我需要Base64編碼圖像的尺寸。 我試圖將其加載到一個Image
,但它只是說,這是0x0
從Base64編碼圖像獲取尺寸
const image = new Image();
image.src = 'data:image/jpeg;base64,someBase64ImageString';
console.log(image.width + 'x' + image.height);
我無法弄清楚如何得到這個信息。
我有一個Angular應用程序,我需要Base64編碼圖像的尺寸。 我試圖將其加載到一個Image
,但它只是說,這是0x0
從Base64編碼圖像獲取尺寸
const image = new Image();
image.src = 'data:image/jpeg;base64,someBase64ImageString';
console.log(image.width + 'x' + image.height);
我無法弄清楚如何得到這個信息。
設置src
和圖像中的「加載」狀態(因此具有尺寸)之間的步驟是異步 - 這似乎適用於數據URI以及外部資源(至少在Chrome中)。
要安全保證width
和height
被填充,邏輯應該在回調運行 - 即
let im = new Image;
im.src = 'data:image/png;base64,whatever';
im.onload =() => console.log(im.width);
注意這只是一個問題,在第一時間的圖像加載,你的代碼工作原樣用於連續調用 - 可以推測這與瀏覽器處理和緩存數據的方式有關。
嗨,謝謝你的答案。據我記得,加載頁面時,onload事件被激發,但由於它已經加載,當我註冊時,我不明白什麼時候該事件應該被解僱? – methgaard
圖像有他們自己的'load'事件。被「加載」的頁面僅考慮標記 - 而不是嵌入資源的狀態。點被加載或不加載,顯然有一些處理是在圖像尺寸被填充之前進行的。 – Emissary
謝謝,解決了! – methgaard