从Base64编码图像获取尺寸

met*_*ard 7 javascript base64 image

我有一个Angular应用程序,我需要Base64编码图像的尺寸.我试图加载它,Image但它只是说它是0x0

const image = new Image();
image.src = 'data:image/jpeg;base64,someBase64ImageString';

console.log(image.width + 'x' + image.height);
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何获取这些信息.

Emi*_*ary 6

src和设置为处于“已加载”状态(因此具有尺寸)之间的步骤是异步的-这似乎适用于数据URI和外部资源(至少在Chrome中是这样)。

为了安全地保证widthheight被填充,逻辑应在回调中运行-即

let im = new Image;
im.src = 'data:image/png;base64,whatever';
im.onload = () => console.log(im.width);
Run Code Online (Sandbox Code Playgroud)

请注意,这仅是第一次加载图像时的问题,您的代码可按原样运行以进行后续调用-推测这与浏览器处理和缓存数据的方式有关。