Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中同步获取图像宽度和高度_Javascript_Typescript - Fatal编程技术网

在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}
我减少了代码,没有异步函数我如何获得值