我有一个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