在javascript中同步获取图像宽度和高度
我不知道如何同步获得图像宽度和高度。请更正下面的代码 我尝试了很多方法来直接获得图像的宽度和高度在javascript中同步获取图像宽度和高度,javascript,typescript,Javascript,Typescript,我不知道如何同步获得图像宽度和高度。请更正下面的代码 我尝试了很多方法来直接获得图像的宽度和高度 getImageSize(url){ var img = new Image() img.src = url img.onload = function(){ return [img.width, img.height] } } getImageUrl(obj){ let vm = this l
getImageSize(url){
var img = new Image()
img.src = url
img.onload = function(){
return [img.width, img.height]
}
}
getImageUrl(obj){
let vm = this
let reader = new FileReader()
reader.readAsDataURL(obj)
reader.onload = function() {
return reader.result
}
}
async getImageSize(imgObj){
let base64URI = await this.getImageUrl(imgObj)
let size = await this.getImageSize(base64URI)
return size
}
beforeuploadImage(event){
let imgsize = this.getImageSize(imgObj)
imgsize = imgsize.split(",")
console.log(imgsize[0], imgsize[1])
}
我需要在上传图像之前直接在
方法中获取图像的宽度和高度,因为“读取图像”是一个异步操作。注意,你不能等待这个.getImageUrl
或者这个.getImageSize
,因为这两个函数都没有返回承诺(它们都returnundefined
,因为这些函数中没有return语句)@joshipatabhi请参考promise的用法。看起来是同步的,但它不是-但至少代码会像您期望的那样工作getImageUrl(obj){returnnewpromise((resolve,reject)=>{let reader=new FileReader()reader.onload=function(){var img=new Image()img.src=reader.result img.onload=function(){resolve(JSON.stringify({'width':img.width,'height':img.height}))};img.onerror=reject;};reader.readAsDataURL(obj)reader.onerror=reject}}
我减少了代码,没有异步函数我如何获得值你不能-因为“读取图像”是一个异步操作注意,你不能等待this.getImageUrl
或this.getImageSize
,因为这两个函数都没有返回承诺(它们都returnundefined
,因为这些函数中没有return语句)@joshipatabhi请参考promise的用法。看起来是同步的,但它不是-但至少代码会像您期望的那样工作getImageUrl(obj){returnnewpromise((resolve,reject)=>{let reader=new FileReader()reader.onload=function(){var img=new Image()img.src=reader.result img.onload=function(){resolve(JSON.stringify({'width':img.width,'height':img.height}))};img.onerror=reject;};reader.readAsDataURL(obj)reader.onerror=reject}
我减少了代码,没有异步函数我如何获得值