【问题标题】:getting the height/width of an image that does not have height/width set获取没有设置高度/宽度的图像的高度/宽度
【发布时间】:2012-04-18 09:31:16
【问题描述】:

我正在处理从 swf 转换器创建的 HTML 页面。生成的 HTML 使用 SVG 图像来创建与 swf 布局匹配的元素。

然后我尝试在这些 svg 图像之上加载图像,但不幸的是 svg 图像没有设置高度和宽度,所以它们看起来像这样:

<div class="wlby_5">
    <!-- Start of symbol: element3 -->
    <img src="FlashTemplate_assets/svgblock_2.svg" class="wlby_4"></img>
    <!-- End of symbol: element3 -->
  </div>

当我在此图像上附加图像时,我无法获取原始高度和宽度来调整我正在加载的图像的大小,因此它会调整大小以匹配原始 svg 图像。这就是我在新图像中加载的方式:

var imgWidth = $('div[class~="' + obj.name+ '"]').find('img').width()
var imgHeight = $('div[class~="' + obj.name+ '"]').find('img').height();


console.log("width of image", imgWidth);
console.log("height of image", imgHeight);
console.log( $('div[class~="' + obj.name+ '"]').find('img') );

$('div[class~="' + obj.name+ '"]').find('img').attr('src', obj.value);
$('div[class~="' + obj.name+ '"]').find('img').attr('width', imgWidth);
$('div[class~="' + obj.name+ '"]').find('img').attr('height', imgHeight);

所以我试图在 div 层中获取图像的高度和宽度,但是这些无法访问,在控制台中它们都设置为 0。

如何访问原始 svg 图像的高度和宽度,以便将其应用于正在加载的新图像?

谢谢

斯蒂芬

【问题讨论】:

  • 我不知道.svg对这里的东西有什么影响,但是对于普通图像,您只能在加载完成后获取它们的高度和宽度。因此,您必须设置一个 onload 处理程序并在触发时获取高度和宽度。

标签: jquery html image


【解决方案1】:

在这些情况下,有两种方法可以检索 SVG 图像的高度/宽度。两种方法都有效,但我个人更喜欢第一种。

选项 1

可以使用 SVGElement 对象的getBBox() 方法。这可以检索 x 和 y 偏移量,以及宽度和高度。

$('img').getBBox().width  
$('img').getBBox().height

选项 2

或者,您可以像这样使用getBoundingClientRect() 方法:

$('img').getBoundingClientRect().width;

【讨论】:

  • 是的,请,我试过 onload 似乎不起作用,我如何实现它不起作用。
  • @stevo 好的,给我几分钟
  • 我已经尝试实现你发给我的例子,我似乎得到了一个循环错误,这就是我实现它的方法function loadImage(src){ this.image = new Image(); this.image.src = src; if(!this.image.complete &amp;&amp; this.image.height==0){ loadImage(src); }else{ $('img').css({ display:block, width: this.image.width, height:this.image.height}); } } 然后像这样调用这个函数var img = $('div[class~="' + obj.name+ '"]').find('img'); loadImage(img);
  • @stevo 抱歉,我没有说清楚。 src 参数是图像的来源。我将用一个例子来编辑我的答案。
  • 您好,我已经尝试过了,但仍然出现错误。错误消息是一个重复的红色“loadImage”文本,没有别的。
猜你喜欢
  • 2012-03-01
  • 2014-06-21
  • 1970-01-01
  • 1970-01-01
  • 2013-06-19
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多