2012-04-18 30 views
0

私は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> 

Iをこの画像の上に画像を追加すると、オリジナルの高さと幅を取得できないため、読み込んでいる画像のサイズを変更して、元の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の層内の画像の高さと幅を取得しようとしているが、これらはアクセスできません、彼らは両方ともコンソールに

元のsvgイメージの高さと幅にアクセスするにはどうすれば読み込み中の新しいイメージに適用できますか?

おかげ

スティーブン

+0

私はここにものに持ってどのような効果の.svgわかりませんが、しかし、通常の画像のための彼らは、彼らが読み込みを完了した後にのみ、彼らの高さと幅を得ることができます。だから、 'onload'ハンドラを設定し、その起動時に高さと幅を取得する必要があります。 – jfriend00

答えて

1

このような状況でSVG画像の高さ/幅を取得するための2つの方法があります。どちらの方法も機能しますが、私は個人的に最初の方が好きです。

オプション1

SVGElementオブジェクトのgetBBox()方法を用いることができます。これにより、xとyのオフセットだけでなく、幅と高さも取得できます。

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

代わりにオプション2

、あなたがこのようなgetBoundingClientRect()メソッドを使用することができます

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

はい、私はonloadがうまくいきませんでした、よく私がそれを実装した方法は動作しませんでした。 – StephenAdams

+0

@stevo大丈夫私に数分を与えてください –

+0

私が送ったサンプルを実装しようとしましたが、ループエラーが発生しているようです。これはどのように実装したのですか?function loadImage(src){ \t this.image =新しいイメージ(); \t this.image.src = src; \t {\t \t loadImage(SRC)IF(this.image.complete && this.image.height == 0!)。 \t}他{ \t \t $( 'IMG')、CSS({\t表示:ブロック、 \t \t \t \t \t \t幅:this.image.width、 \t \t \t \t \t \t高さ:this.image 。高さ}); \t} } 'このようにこの関数を呼び出しました' var img = $( 'div [class = = "' + obj.name + '"]')。find( 'img'); loadImage(img); ' – StephenAdams

関連する問題