2 回答
TA贡献1886条经验 获得超2个赞
您可以通过使用Blob和数据 URI来避免第二次网络往返:
fetch('https://cdn.glitch.com/2eddb7d4-12e2-45ae-8d27-738f13fb514a%2FGOPR1017_1586689900523.JPG?v=1587457335788')
.then(r => r.arrayBuffer())
.then(buffer => {
console.log('Size: ' + buffer.byteLength)
const blob = new Blob([buffer], {type: 'image/jpeg'})
const img = new Image()
img.src = URL.createObjectURL(blob)
img.onload = function() {
console.log(img.width, img.height)
}
})
请注意,您仍然需要onload回调,因为浏览器需要一些时间来解析图像,但在这种情况下,它不会导致网络往返。
TA贡献1876条经验 获得超6个赞
我无法回答你的问题,但我可以给你另一个有用的信息:
图像是一种奇怪的动物,它的行为取决于浏览器、上下文和像素密度。为确保捕捉图像的自然尺寸,请使用:
newImg.naturalHeight; newImg.naturalWidth;
而不是newImg.width
or newImg.clientWidth
。
更多信息:https ://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/naturalHeight
玩得开心!
添加回答
举报