• 締切済み

jQueryで画像の幅と高さをリサイズする方法

jQueryでサイズが異なる画像の幅と高さをリサイズするのに、非常に困っています。 XMLもしくはJSONで複数画像をサーバーサイドから取得します。その画像の条件は、幅サイズは異なるのですが、高さは一定です。仮に高さを140pxとします。 要件を簡単に述べると、 Webサイトの画⾯幅が900pxとした場合に、画像をその幅にきっちり収まるようにしたい。(1pxや2px程度の空きがでても良い) きっちり収めるためには、画像のリサイズを行わなければならないのですが、各行毎の画像の高さは一定とする。(一行目と二行目の高さは異なってよい。) という感じになっています。 そのリサイズ方法ですが、 画⾯の横幅に取得した画像の先頭から何枚収まるか算出しなければなりません。 仮に以下のような画像の横幅とします。 1枚目:180 2枚目:240 3枚目:120 4枚目:80 5枚目:1000 6枚目:600 7枚目:300 8枚目:500 9枚目: 10枚目: ・ ・ ・ これらの画像横幅を足すと 180 + 240 + 120 + 80 + 1000 = 1620 となるため、画面幅の900を超えてしまいます。 そのため4枚目までしか画面幅に収まりません。なので4枚目までの画像幅を足します。 180 + 240 + 120 + 80 = 620 900(画面幅) ÷ 620(幅総数) x 140(画像の規定高さ) = 203(切り捨て) となり、その行に納まる4枚の画像の高さを203pxにして、それに併せて4枚の画像の幅サイズをリサイズします。 1枚目の画像の場合: 180 × (203 ÷ 140) = 261 2枚目の画像の場合: 240 × (203 ÷ 140) = 348 としていくと、4枚の画像の幅総数が899となり画面幅に収まります。高さは4枚すべて203pxです。 5枚目が1000と900を大幅に超えていますので、この場合以下のように高さをだします。 900 ÷ 1000 × 140 = 126 1000 × (126 ÷ 140) = 900 として幅900px、高さ126pxとリサイズします。 という具合に6枚目、7枚目、8枚目の画像の幅総数が900以内として、 すべての画像のそれぞれ高さと幅をリサイズしていきます。 こういった場合に、画像それぞれの幅を見て、画面幅の収める枚数の画像を決めて、 上記のような条件でリサイズしていけばよいでしょうか。 何卒、力添えをお願い致します。

みんなの回答

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

回答がないようなので… ご提示の方法で幅900にそろえることは可能だと思いますが、どのような全体像を望んでいらしゃるのでしょうか? 画像の順序は入替えないものとしても、例えば幅が 1000、100、1000、500のような順で画像が並んでいるとしてご提示の方法だと 1000(高さ126) 100 (高さ1260)   ・・・ という並びになります。 これが予定通りであるなら、ご提示の方法でよいのではないでしょうか。 別の考え方をすれば、 1000+100(高さ114)   ・・・ あるいは、 1000(高さ126) 100+1000(高さ114)   ・・・ のような並べ方も可能でしょう。 また、最後に端数が残った時に、それを幅900で拡大するのかなどの取り扱いも考慮しておく必要もあるかと思います。

stylehorse
質問者

お礼

ご回答ありがとうございます。 画像の総数とスクリーンサイズによってリサイズするというあまり見たいようなパターンとなっています。 ですが、なんとか自己解決できました。

関連するQ&A

  • 沢山の画像ファイルをリサイズして保存するのですが、簡単に済む方法はどんなやり方があるでしょうか?

    沢山の画像ファイル全てをリサイズして保存し直ししないといけません。 簡単に済ませないと業務にならないのですが、どんな方法があるでしょうか? 自動化できそうな条件があるにはあります。以下です。 ●画像ファイルはどれも同じ全体サイズです。   (例:全ファイル共通の全体サイズは、縦1000px、横800px、という具合) ●画像ファイルのリサイズ範囲はどれも同じ位置とサイズです。  (例:全ファイルの共通リサイズ位置は、上から300px、左から100pxで、     全ファイルの共通リサイズ範囲は、縦は500px、横は400px、という具合) PhotoshopCS3を持っておりますのでこれでできればそれで良いですし、フリーソフトで簡単にできるのであればそれでも構いません。 何もないようならば、Photoshopのアクションで出来る範囲を自動化する程度で思っております。プログラミングは全くわからないのでスクリプトは扱うことはできません。 ものすごいファイル数あるので、自動化したいです。 宜しくお願い致します。

  • 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だとそれぞれの画像のリサイズはできないのでしょうか。 みなさんお力お貸しください!!

  • PNG画像のリサイズ

    800×600 px 程度の png 画像を 600×450 px にリサイズしたところ、 ファイルサイズが 25 KB から 100 KB にふえてしまいました。 png画像を上手に小さくする方法をおしえてください。

  • 写真を簡単にリサイズ・軽量化する方法について

    デジタルカメラで撮影した多数の写真(画像幅3648px 画像高さ2736px)を、画像幅約480px程度の写真サイズへ変更したいのですが効率的な方法はありませんでしょうか。 現在Photoshopで[ファイル]→[自動処理]→[画像のフィット]で、幅だけを指定してひとつひとつ小さい写真へとリサイズしています。 さらにHPへ掲載するために[ファイル]→[WEB用に保存]でファイル自体を軽量化しています。 Photoshopの機能、またはその他ソフトなどで短時間かつ大量の写真データをリサイズ・軽量化する方法があったら教えてください。 よろしくお願いします。

  • 画像リサイズ&つなぎ合わせ

    画像(静止画)を任意サイズに一括リサイズし(なるべく画質を落とさずに)、 つなぎ合わせ(4枚程度)できるフリーソフトをご紹介いただけませんか? できれば、画像に文字・矢印程度が書き込めるとよいのですが、むりなら前者だけでも結構です。 よろしくお願いいたします。

  • 画像をリサイズするソフト

     jpgなどの画像を一括してリサイズするソフトは多くありますが、リサイズする際にたとえば640x480(ピクセル)と指定するとそれより小さい画像もそのサイズにリサイズされてしまうようです。  そこで、640x480(ピクセル)と指定した場合、それより小さい画像はそのままで、それより大きい画像のみリサイズするソフトはご存じないでしょうか?  あるいは画像の検索ソフトのようなものでたとえば幅640(ピクセル)以下のものだけ検索できるソフトはご存じないでしょうか? それで小さい画像は除外して大きい画像のみ抽出しようとも思います。  よろしければご回答お願いいたします。

  • リサイズした画像の大きさについて

    MEを使っていて(17インチディスプレイ)、Vixソフトにて画像をリサイズ(800×600)保存をしていましたが、今回PCを買い換えてXpsp3にしてディスプレイは20インチ液晶になりました。 液晶解像度は1680×1050です。 今までのように画像を800×600でリサイズしますと、ディスプレイ画面上、今までの800×600より小さく見えます。 その為、1024×768のサイズにリサイズしてるのですが、これですとメールで相手に添付送信したら、相手のPCによっては大きすぎるのでしょうか・・・? 私としては800×600サイズで画像を保存やメール添付で使いたいのですが・・・・。 自分でPCで見るときにはちょっと小さいのを我慢するしかないのでしょうか・・・? PC初心者ですので、よろしくお願いします。

  • リサイズ画像が送れません

    初歩的な質問ですが教えてください。 Outlookにて、画像サイズを小さくして送ろう思います。 説明書では「イメージを下のサイズにする」のあと、「メッセージの作成」画面が出るとの事ですが、何度ためしても「プロファイルの選択」となってしまいます。 どうしたら、リサイズで遅れるでしょうか?

  • 画像のサイズについて

    ブログにのせる写真のサイズのことで質問です(初心者) いつもデジカメで撮った写真をリサイズして使っていたのですが たまたまよそのブログの写真をいただいたところ 写真のサイズが幅300px 高さ400px で20KBでした(image/pjpeg形式) 画像はかなり鮮明です 私がいつもリサイズしていた写真は 同じ幅300px 高さ400px の場合163KBもあります ブログで使える容量の限界もあり 写真のサイズは極力小さくしたいのです 画質を落とさず写真を小さくすることなく 容量(?)だけ小さくするにはどうしたらよいのでしょうか フリーソフトがあるようですが サイズについてもよく分からず 詳しく教えていただけるとありがたいです よろしくお願いいたします

  • 投稿画像のサイズを調整をしたい

    bloggerを利用しています。 画像を投稿すると、ある一定のサイズに自動的にリサイズされてしまい困っております。 例えば... 400pxの画像を投稿すると自動的に200pxにリサイズされます。また、100pxの画像を投稿するとそのまま100pxで投稿されます。(数値は分かりやすい任意の数です) そこで、リサイズされる画像のサイズを200pxではなく300pxにしたいのですが、そのやり方が分からなくて困っています。 これまで試した事... imgタグのwidthを300pxに指定したところ、著しく劣化した300pxの画像になりました。 どのタグをどのように書き換えれば画質を劣化させずに画像のサイズ調整ができるのか教えていただきたいです。 よろしくお願いします。

専門家に質問してみよう