获取没有设置高度/宽度的图像的高度/宽度
我正在处理从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图像的高度/宽度。两种方法都有效,但我个人更喜欢第一种。
选项1
的SVGElement对象的getBBox()
方法都可以使用。这可以检索x和y偏移以及宽度和高度。
$('img').getBBox().width
$('img').getBBox().height
选项2
或者,你可以使用getBoundingClientRect()
方法是这样的:
$('img').getBoundingClientRect().width;
是的请,我试过onload似乎并没有工作,以及我如何实施它不起作用。 – StephenAdams 2012-04-18 09:38:20
@stevo好吧给我几分钟 – 2012-04-18 09:39:38
我试过执行你发给我的例子,我好像得到了一个循环错误,这是我实现它的功能loadImage(src){ \t this.image =新图片(); \t this.image.src = src; \t if(!this.image.complete && this.image.height == 0){ \t \t loadImage(src); 。 \t}否则{ \t \t $( 'IMG')的CSS({\t显示:块, \t \t \t \t \t \t宽度:this.image.width, \t \t \t \t \t \t高度:this.image 。高度}); ('img');}然后调用这个函数就像这样'var img = $('div [class〜=''+ obj.name +'“''')。 loadImage(img);' – StephenAdams 2012-04-18 10:05:40
我不知道有什么作用.SVG对这里的东西,但对于正常图像,只有在完成加载后才能获得高度和宽度。所以,你必须设置一个'onload'处理程序,并在火灾发生时获得高度和宽度。 – jfriend00 2012-04-18 09:35:11