固定枠内への最大画像の貼り付け

このQ&Aのポイント
  • HTMLで作成された固定枠内に、CGIを使用して複数の画像データを、1枚ずつ表示させるのですが、現在の状態では画像データの大きさによってレイアウが不均一になってしまいます。
  • JavaScriptを利用して、元画像の縦横比を保ったまま、任意の大きさの枠の中で、画像データの大きい方の長さが枠内いっぱいになるように表示したいのです。
  • 下記のスクリプトでは、縦横共通の最大値しか指定できません。縦横それぞれに最大値を指定できるようにし、上記の様に表示させるには、どの様な記述方があるでしょうか。
回答を見る
  • ベストアンサー

固定枠内への最大画像の貼り付け

HTMLで作成された固定枠内に、CGIを使用して複数の画像データを、 1枚ずつ表示させるのですが、現在の状態では画像データの大きさによってレイアウが不均一になってしまいます。 そこで、JavaScriptを利用して、元画像の縦横比を保ったまま、 任意の大きさの枠の中で、画像データの大きい方の長さが枠内いっぱいになるように表示したいのです。 つまり、 縦横比のそれぞれ違った、フレームと画像があり、 その画像を、フレームの中心部から拡大して行ったとき、 縦横いずれか先にフレームに接する大きさのところまで拡大表示される 大きさで表示させたいのですが。 下記のスクリプトでは、縦横共通の最大値しか指定できません。 縦横それぞれに最大値を指定できるようにし、 上記の様に表示させるには、 どの様な記述方があるでしょうか。 ご教授、宜しくお願いします。 (スクリプト要素) size = 120 ; function resize(id) { if (document.images[id].width > document.images[id].height) document.images[id].width = size ; else document.images[id].height = size ; } (BODY要素) <img src="hoge.jpg" id="sample1" onLoad="resize('sample1')" />

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

固定枠の指定がどのようになされているのか不明ですが、とりあえず直接指定しちゃうとしてこんな感じ? (変数sizeが固定枠のサイズ) <script> function resize(e) { var size = { width:300, height:200 }; var w = size.width / e.width; var h = size.height / e.height; if (w > h) w = h; e.width *= w; } <HTML> <img src="hoge.jpg" onload="resize(this)">

juniper_se
質問者

お礼

fujillin様 ご回答、有難うございました。 早速、示して頂いたScriptを書き込んだところ、 希望通りの画像表示を実現できました。 有難うございました!

関連するQ&A

  • jquery cycleで画像リサイズ

    jquery cycle pluginを使用して、画像のスライドをしています。 画像を画面中央に全画面表示をしたいのですが、 スライドする画像のサイズがそれぞれ異なるため、 画像の比率を固定して、縦横のサイズで大きい方を 画面に合わせて表示したいのです。 私が考えたのは、 (全文は載せられません。すみません。) <div id="slideImage"> <img id="slide1" src="test01.gif"> <img id="slide2" src="test02.gif"> ・・・ <img id="slide5" src="test05.gif"> </div> ↑のようにスライドする画像があるとして、 下記のjavascriptでスライドする画像分ループさせて、 id部分を変数にして、縦横どちらかが大きかったら・・・という 計算をしています。 function resize(){ for(var i=1; i<6; i++){ var slideNo = "slide" + i; var w = document.getElementById(slideNo).width; var h = document.getElementById(slideNo).height; if(w >= h){ document.getElementById(slideNo).width = screen.width; }else{ document.getElementById(slideNo).height = screen.height; } } } 確かにこれだとidがslide1の場合はサイズをリサイズしてくれるのですが、 slide2以降をリサイズしてくれません。 ループは確かに回っているし、 if文の前でリサイズ前の画像サイズをちゃんと取得しているのですが、 なぜかscreen.width(screen.height)の値が入ってくれません。 jquery cycle pluginだとそれぞれの画像のリサイズはできないのでしょうか。 みなさんお力お貸しください!!

  • 枠の固定

    左右に分割したフレームの右側に <center> <div style="border-style:ridge; border-width:10px; width:400; height:120;"> </center> というタグで枠を作成しました。(枠の中に文字が入っています) 私のPCの画面からであると、真ん中に表示されるのですが、 画面サイズやアスペクト比が異なると、 ずれが生じてしまうようなのです。 これを常に真ん中に表示させるようなタグがあれば 教えて下さい。

    • ベストアンサー
    • HTML
  • 画像縮小プログラムが、最初に読み込んだ時(再読み込みしない場合)動きません。

    今javascriptを使って、縦横比を固定したまま画像を縮小するプログラムを作っています。 ソースコードは function keep_max() { for (i in document.images) { if (document.images[i].className == 'small_sale_thumb') { max_width = 100 ; max_height = 110 ; }else { continue; } if ( document.images[i].height > max_height) { now_width = document.images[i].width; now_height = document.images[i].height; factor = max_height/now_height; document.images[i].height = max_height ; document.images[i].width = now_width * factor; } } } それで、このようにして画像を表示しようとします。 <img width="100" class="small_sale_thumb" src="http://hogehoge.co.jp/bc11/u3785993.jpg" /> <script type='text/javascript'> keep_max(); </script> このようにして、他のドメインのサイト(楽天など)の画像を読み込み、 縮小して表示しようとしているのですが、最初に読み込んだ場合、このプログラムが作動しません。 しかも何故か、二回目に読み込んだ場合(同じページを再読み込みした場合等)作動します。 これはいったいどういうことでしょうか? ちなみに今妥協策として、bodyのonloadタグにもこれを仕込んでいますが、この場合、画像表示から縮小までにタイムラグがあります。 このプログラムを上手く動かす方法or他のクライアントサイドでの縮小の仕方はありませんでしょうか?? ちなみに縮小したい画像の件数が多いので、負荷対策のためGD等のサーバーサイドでの縮小は考えないようにしています。

  • 画像のサイズ

    PHP+MYSQLで掲示板のようなサイトを作っています。 画像をアップロードして表示できるようにしています。 このとき、様々なサイズ(縦横比)の画像を想定しないといけないと思いますが、表示させるサイズを縦100px以下、横80px以下に揃えたいのですが、どのようにすればよいのかわかりません。 <img src... height="100px" width="80px"> とすると、画像の縦横比が変わってしまいます。 (当然ですが。。。) 画像を100px×80px以下に揃える方法を教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 同じページで画像をリサイズする方法を教えてください。

    お忙しい中お読み頂きありがとうございます。 javascriptで、その場でアップロードした画像を リサイズして表示するスクリプトを作っているのですが、 どうしても解決できない問題があります。 【問題】 最初に画像をアップロードした時の画像サイズが、 もう一度アップロードした時に反映されてしまうのです。 (あるいは最初の画像サイズが指定したサイズにならない) onChangeで読み込んでいるのが原因かも知れませんが、 どんなに調べても対処法がわかりません。 ページ更新などせずに、繰り返しアップロードしても、 うまく画像がリサイズする方法を是非教えてください。 【追記】 また、もしお分かりでしたら、 リサイズ方法やコード記述が正しいのかも教えて頂けると大変嬉しいです。 (若干綺麗にリサイズされな場合があるので) 以下コードになります。どうか宜しくお願いします。 <script type="text/javascript"><!-- function dispImage(sSrc) { document.p1.src = sSrc; document.p1.height; document.p1.width; if(document.p1.width > '150'){ document.p1.height = (document.p1.height / document.p1.width) * '150'; document.p1.width; } } // --></script> <INPUT type="file" onChange="dispImage(this.value);"><BR> <IMG name="p1">

  • Flashで外部読み込み画像の縦横比を維持したままリサイズするには?

    Flashで、外部読み込み画像を、指定したサイズにリサイズして読み込みたいと思い、 ネットで色々と検索してみて、下記のスクリプトに辿り着いたのですが、 このスクリプトだと、読み込む画像の縦横比が、サイズ指定した縦横比と違った場合でも、 無理矢理に指定したサイズの縦横比にリサイズされて読み込まれてしまいます。 要点を掻い摘んで説明すると、、、 ========================================================== 読み込む画像の、 横幅が 120以上の大きさなら、横幅を 120にリサイズして、 縦の大きさは、それに比例して縮小。 縦の大きさが 160以上なら、縦の大きさを 160にリサイズして、 横幅は、それに比例して縮小。 ========================================================== と言った事がしたいのです。 ↑上記のように、縦横比を維持したまま、外部読み込み画像を リサイズして読み込むには、一体どうすれば良いのでしょうか? ネットで丸1日かけて調べてみましたが、どうしても、その方法が分からず、 途方に暮れています。 どなたか、Flashで外部読み込み画像の縦横比を維持したままリサイズする方法を ご存知の方が居られましたら、何卒ご教示よろしくお願い致しますm(_ _)m --------------------------------------------------- var mcLoader:MovieClipLoader = new MovieClipLoader(); var listenerObject:Object = new Object(); listenerObject.onLoadInit = function() { photoFrame._width = 120; photoFrame._height = 160; }; mcLoader.addListener(listenerObject); mcLoader.loadClip("photo001.jpg", photoFrame); --------------------------------------------------- 環境 / win XP / Flash CS3 / アクションスクリプト 2.0

    • ベストアンサー
    • Flash
  • 画像の縦横比固定の計算方法。

    画像の縦横比固定の計算方法。 プログラムで画像を縦横比固定でサイズ計算したいのですがどのように計算すればいいのでしょうか? 画像を縦横比固定で画面サイズに合わせて拡大縮小したいと思っています。 調べてみたのですが、調べ方が悪かったのか見つけることが出来ませんでした。 カテゴリは数学になるとは思うのですが、プログラムでの計算なのでこちらにしました。 プログラムでなくても、計算方法が分かればいいので、文章のみでも構いません。

  • Flashで画像を拡大縮小する時の画像の荒れを防止する方法を教えてください。

    Flashで、「画像にマウスが乗ると拡大する」というムービークリップを作っています。 画像は、拡大した時のサイズで作成し、Flashに読み込んでいるのですが、 ファイルサイズを縮小する時、プレビューすると画像が荒れてしまいます。 それを回避する方法教えていただければとても助かります。 拡大縮小の指示は(画像のMCに) onClipEvent(load){ wideX = [245,300]; a = 0; function move(x){ a = x; } } onClipEvent(enterFrame){ this._height = 0.666*this._width; //縦横比を固定 this._width += (wideX[a] - this._width)/3; } です。 横幅300pxで取り込んだ画像の横幅を、245pxか300pxにしています。

    • ベストアンサー
    • Flash
  • 二重の画像切り替え

    以下のようなJavaScriptを作りたいと考えております。 非常にレベルの低い内容で申し訳ないのですが、どうかみなさんの知恵を貸していただけば幸いです。 (ちなみにJavaScriptで処理品ければいけない成約がありますので、他の方法は今回はすみません。) 見せるのも恥ずかしいレベルのソースですが、ソースも載せます。 CのいずれかをクリックするとBの3つのサムネイル画像がすべて切替り、 更にBのいずれかをクリックすると拡大画像のAが切替るJavaScriptを作りたいと考えております。 ┌──┐ │拡大│←A(Bの拡大画像) └──┘ ┌─┐┌─┐┌─┐ │前││横││後│←B(車の各方向からの写真画像) └─┘└─┘└─┘ ┌─┐┌─┐┌─┐ │赤││青││黒│←C(車のカラーバリエーション) └─┘└─┘└─┘ ◆◆◆現在のソース◆◆◆ <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2/jquery.min.js"></script> <!--A(Bの拡大画像)--> <div id="main_img"><img id="target_main" src="images/red_head.jpg" width="450" height="190" alt="image"></div> <!--B(車の各方向からの写真画像)--> <div class="thumbnail"> <ul> <li><a href="images/red_head.jpg"><img id="target_thumbnail_01" src="images/red_head.jpg" width="100" height="41" alt="gold_01"></a></li> <li><a href="images/red_side.jpg"><img id="target_thumbnail_02" src="images/red_side.jpg" width="100" height="41" alt="gold_02"></a></li> <li><a href="images/red_back.jpg"><img id="target_thumbnail_03" src="images/red_back.jpg" width="100" height="41" alt="gold_03"></a></li> </ul> </div> <!--C(車の各方向からの写真画像)--> <div class="color">   <ul>     <li><a href="○○○"><img src="images/wheat.jpg" width="78" height="26" alt="sample01"></a></li> <li><a href="○○○"><img src="images/images/java.jpg" width="78" height="26" alt="sample01"></a></li> <li><a href="○○○"><img src="images/images/graphite.jpg" width="78" height="26" alt="sample01"></a></li> </ul> </div> <!--メインイメージ切り替えスクリプト--> <script type="text/javascript"> $(document).ready( function() { $(".thumbnail a").click( function() { var changeSrc = $(this).attr("href"); $("#target_main").fadeOut("slow", function() { $(this).attr("src", changeSrc); $(this).fadeIn(); } ); return false; }); }); </script> <!--カラー切り替えスクリプト-->  ・  ・  ・

  • 画像の切り替え

    教えてください。 画像がはじめに1つ表示されていて、 横にサムネイルが2つあり、 サムネイルのマウスオーバーで、その画像が大きく表示され、 マウスオーバーで、元の画像へと表示が戻り、 サムネイルのクリックで、その画像が大きく表示されたまま固定となる ということがしたいのですが、 マウスオーバー、マウスアウトはとりあえず実装できたのですが、 マウスクリックを実装しても、 やはり、マウスアウトで画像が切り替わってしまいます。 どうしたらいいのでしょうか? <IMG src="images/a.jpg" id="display" name="display" width="100" height="100" border="0"> <a href="javascript:;" onClick="document.display.src='images/a.jpg'" onMouseOver="MM_swapImage('display','','images/item/a.jpg',1)" onMouseOut="MM_swapImgRestore()"> <IMG src="images/item/a.jpg" width="20" height="20" border="0" name="thumb1" id="thumb1"> </a> <a href="javascript:;" onMouseOver="MM_swapImage('display','','images/b.jpg',1)" onMouseOut="MM_swapImgRestore()" onClick="document.display.src='images/b.jpg'"> <IMG src="images/b.jpg" width="20" height="20" border="0" name="thumb2" id="thumb2"> </a> 以上 よろしくお願いします。

専門家に質問してみよう