javascript - 为什么加载后无法获取图像宽度和高度?

标签 javascript jquery

我是一个图像元素。我让用户上传图像。 上传后,我处理图像。我想加载处理后的图像并显示它。 我得到并显示图像很好。

我还需要知道加载图像的宽度和高度。

我按照下面的方式正确执行此操作,它应该可以工作,但不确定为什么我的宽度和高度为零:

HTML:

<img id="photo" src="">

JS:

    var id = 1000;
    var img = $("#photo").attr('src', '/photo/get/' + id)
     .on('load', function () {
          var w = 0;
          var h = 0;
          if (!this.complete || typeof this.naturalWidth === "undefined" || this.naturalWidth === 0) {
              alert("Could not load image");
          }
          else {
              alert('Image loaded');
              w = $(this).width();
              h = $(this).height();
              alert("width=" + w + " height=" + h);//PRINTS 0, 0, WHY???
          }
   });

最佳答案

jQueryObject.width() 将返回目标元素的计算样式。
如果在 CSS 中强制 widthheight该元素的值,那么它将返回那些强制值。

如果您想获取加载图像的大小,您需要的是检查 naturalWidthnaturalHeight您的<img>的属性元素:

w = this.naturalWidth;
h = this.naturalHeight;

关于javascript - 为什么加载后无法获取图像宽度和高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32918223/

相关文章:

javascript - 我的 sails.js 服务将 “undefined” 返回到调用 Controller 操作

javascript - 如何将来 self 正在使用的 API 的 JSON 响应分配给页面上的元素?

javascript - 如何预加载图像,在继续之前强制加载图像(html/javascript)?

jquery - 使用 JQuery 调用 WebMethod

javascript - 这个 Javascript 注册代码有什么作用?

php - 将 $_GET 传递给脚本 (AJAX)

javascript - 在javascript中用随机数填充二维数组

javascript - meteor 发现不返回数据

jquery - 设置所选选项/.attr ("selected"时出现问题,true)

javascript - 折叠具有初始状态的面板