• ベストアンサー

phpで画像を縮小して表示することは可能??

imgタグでリサイズしても、結果的には元の画像を表示させているのと変わりありませんよね。 そこで、phpで縮小して表示できればと思っています。 別にファイルを保存せずに縮小表示することは可能なのでしょうか?

  • PHP
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
回答No.1

http://masago.kir.jp/php20040218.php できますよ。 ただし、ライブラリがインストールされてないとダメだったような。 つまりサーバによりけり。

hanagogo
質問者

お礼

ありがとうございました。早速試してみます。GIFファイルの画像も縮小できればいいんですけどね…

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

回答自体は#1さんのおっしゃるように可能ですが、 よほどのことがない限り、最初からリサイズしたデータをスタティックに 用意しておく方が効率的で、サーバーにも負荷をかけません。 場合によっては運用面で調整なさった方がよろしいかと

hanagogo
質問者

お礼

ありがとうございます。確かにGPUを結構消耗するので考えたいと思います。

回答No.2

> GIFファイルの画像も縮小できればいいんですけどね… サーバの仕様によりますが、GIFも出来ますよ(GIFライセンス問題は特許切れのため過去のもの)。 GDライブラリはPHPに同梱されているものを使う場合も多いので、比較的新しいPHPならばgifもリサイズ可能です。 http://jp2.php.net/gd

hanagogo
質問者

お礼

ありがとうございます。GIFでもできました。

関連するQ&A

  • GDで画像表示

    GDのimagejpeg()などでJPGバイナリをブラウザに送信することができますが、<img scr= のような所に画像を表示できませんか? やりたいことは、xx.jpgを640,480にリサイズしてyy.phpが出力するHTMLタグの<img srcの部分に640,480のサイズで画像を表示することです。 xx.jpgはユーザが適当なサイズでアップロードする画像です。 640,480にリサイズした画像を保存してから<img srcで表示するなら、それは可能だということが分かりますが、メモリ上で解決したいと思っています。

    • ベストアンサー
    • PHP
  • 画像の縮小表示がおかしい

    連番の画像を縮小版で表示していて、画像同士の名前を入れ替えたいのですが、そのままだと同じ名前のファイルがあると警告がでるため、入れ替えたいどちらかのファイルを別のフォルダに移して名前を変えるのですが、その別のフォルダに移したファイルの名前を入れ替えたい画像の名前に変えると縮小表示が名前を入れ替えたい画像になってしまいます。 もちろんダブルクリックすると適切な画像が表示されるますし、再起動すれば縮小表示も適切に表示されるのですがややっこしくて、し様がありません。 どうにかならないでしょうか? (質問自体もかなりややっこしくて理解しづらいかもしれませんので分からないところがありましたら補足します。)

  • PHP GD 画像が縮小できない

    宜しくお願いします。 ※ローカル環境です。 (WinXP PHP5 Smarty PEAR MySQL ※GDはインストされています。) 下記のコードで、サーバーにもともと上げてある画像(jpeg)を縮小して、 それをブラウザに表示させようと思います。 ですが、縮小されずに、元の画像サイズのまま表示されてしまいます。 おかしな点をご指摘下さいませ。 また、(1)で、 jpegファイルを取り込むコードがありますが、これは、 もし画像がGIFであったりPNGの場合を顧慮するなら、 取り込む際にそれぞれを判定するのが基本でしょうか? もし、今回のようにサバー元の画像をリサイズするのであれば、拡張子もわかっていますので、 jpegファイルだけのことを考えればいいですが、 たとえば、任意のアップロードされたファイルを扱う場合は、上記3種類を判定すして処理すべきですよね? 以上、2点を回答下さいませ。 // -- (1) // 画像を読み込む。 $file_path = "http://www元画像.com/img/aa.jpg"; $image = ImageCreateFromJPEG($file_path); //JPEGファイルを読み込む /*********** $image = ImageCreateFromGIF($file_path); //GIFファイルを読み込む $image = ImageCreateFromPNG($file_path); //PNGファイルを読み込む ************/ // -- (2) // 画像のサイズを取得。 $width = ImageSX($image); //横幅(ピクセル) $height = ImageSY($image); //縦幅(ピクセル) // -- (3) // 縮小した画像のサイズを決める。 $new_width = 100; $rate = $new_width/$width; //圧縮比 $new_height = $rate*$height; // -- (4) // 空の画像を作成する。 $new_image = ImageCreateTrueColor($new_width, $new_height); // -- (5) // サンプリングしなおす  ImageCopyResampled($new_image,$image,0,0,0,0,$new_width,$new_height,$width,$height); // -- (6) // ブラウザに出力する場合。 ImageJPEG($image); //ImageJPEG($image,'simpletext.jpg'); //ImageGIF($image); //環境によっては使えない //ImagePNG($image); // -- (7) // メモリを解放する。 imagedestroy ($new_image); imagedestroy ($image);

    • ベストアンサー
    • PHP
  • 画像の縮小表示ができなくなりました。

    以前、普通に画像の縮小表示を利用(ウィンドウズ98、IE5.5使用)していたのですが、「MGI PHOTOSUITE 8.1J」(ソニーのデジカメについてきた画像編集ソフト)をインストゥールしてそれを利用して画像を開くようにしました。が、なにかと面倒くさいので、元に戻そうとして関連付けをはずしました。そして、画像ファイルを開こうとしたら、「アプリケーションを選択・・・」とでたので、IEを選びました。そしたら、縮小表示が出来なくなりました。ファイルのプロパティーの「縮小表示を使用する」にはちゃんとチェックも入っています。どうすれば元に戻りますか?

  • 【縮小画像をきれに表示】

    商品一覧みたいな感じで 画像をサムネイル表示させているのですが そのサムネイルは元画像を縮小表示させてあります。 あるサイトでは問題なく奇麗に表示されるのですが あるサイトではとっても模様が少し変わってもみえて 実際の商品と別にも見えてしまう感じです。 この縮小画像を奇麗に表示させるには どうしたらいいのでしょう。

  • DBに格納された画像データを縮小して表示したい

    PHP5+MySQL5です。 DB内のBLOBカラムに、Base64エンコードされた画像データが格納されています。 これを、サムネイル用に縮小して表示したいのですが、widthとheightで見た目だけを小さくするのではなく、ファイルサイズも小さくしてブラウザに渡したいと考えています。 (小さくした画像は保存しません) そこで、DBから取得した画像データを「imagecopyresampled」で再サンプリングしつつ小さくしたいと思いましたが、画面には何も表示されませんでした。 以下、ソースを簡潔に記載します。 $db_img = "DBから画像データを取得"; //600x600の画像 //Base64デコード $old_img = base64_decode($db_img); //200x200のサムネイル画像を作成 $new_img = imagecreatetruecolor(200,200); //再サンプリング・縮小(600x600→200x200) $thumbnail = imagecopyresampled($new_img, $old_img, 0, 0, 0, 0, 200, 200, 600, 600); //画面出力 print $thumbnail; この場合、どのように処理すればいいのか教えていただけないでしょうか? 宜しくお願いします。

    • 締切済み
    • PHP
  • DBに格納された画像データを縮小して表示したい

    PHP5+MySQL5です。 DB内のBLOBカラムに、Base64エンコードされた画像データが格納されています。 これを、サムネイル用に縮小して表示したいのですが、widthとheightで小さくするのではなく、ファイルサイズも小さくしてブラウザに渡したいと考えています。 (小さくした画像は保存しません) そこで、DBから取得した画像データを「imagecopyresampled」で再サンプリングしつつ小さくしたいと思いましたが、画面には何も表示されませんでした。 以下、ソースを簡潔に記載します。 $db_img = "DBから画像データを取得"; //600x600の画像 $old_img = base64_decode($db_img); $new_img = imagecreatetruecolor(200,200); //200x200のサムネイル画像を作成 $thumbnail = imagecopyresampled($new_img,$db_img,0,0,0,0,200,200,600,600); print $thumbnail; $old_imgの処理が間違っているのだろうと思うのですが、どのように処理すればいいのかわかりませんでした。 この場合、どのように処理すればいいのか教えていただけないでしょうか? 宜しくお願いします。

    • 締切済み
    • PHP
  • 【PHP】画像が表示されず「×」が表示される

    以下のようなコードで、ブラウザに画像を表示させようとしたところ、画像が表示されず、代わりに「×」印が表示されました。どうすれば画像が表示できるのでしょうか? <?php $img = file_get_contents('./test.jpg'); header('Content-type: image/jpeg'); echo $img; ?> 上記のコードは以下のサイトを参考に書きました(というより、ほぼそのままコピペしただけです。) http://ysklog.net/php/1575.html http://php.birdlab.com/tips/1 【備考】 ・OSはWindows7、XAMPPを導入して動かしています。IE11とChromeのバージョン 37.0.2062.120 m(現時点の最新版のようです)で試しましたがどちらも同じ結果でした。(正確には、Chromeの方は×印ではなく、文字1文字分くらいの大きさの「ファイル」のような画像でしたが…(ネットを見ている際に、画像ファイルが表示されない時に代わりに表示されるアレです)) ・表示した画像ファイル test.jpg はphpファイルと同じフォルダに置いてあります。ファイル名が違う(そもそも存在しないファイル名を指定している)場合には、エラーメッセージが表示されましたので、ファイルの存在は認識されているようです。 ・readfile関数を使っても駄目でした。 ・画像ファイルが壊れているということはありません(画像ファイルのアドレスを直接指定した場合はきちんと表示されます) コードの問題ではなく、環境設定の問題だと思いますが、どこに問題があるのかさっぱりわかりません。よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 画像の縮小版表示について

    画像の縮小版表示について、タグの[表示]で、[縮小版]に設定すると、通常であれば縮小した画像が表示されるはずですが、JPEGのアイコン表示になってしまったおり、縮小した画像を見ることができなくなっています。[縮小版]に設定後、縮小した画像が表示する方法を何方かご存知でしたら教えてください。

  • 縮小画像を事前ではなく画像表示時に作成しても良い?

    アップロード画像を縮小するタイミングについて教えてください。 画像アップロードする際に縮小も済ませておく実装をよく目にするのですが、事前縮小せずに、画像を表示する際に縮小してもよいのでしょうか? ■案1.画像アップロードする際に縮小 ・「元画像」+「縮小画像」を保存 ・縮小画像表示は、事前作成した「縮小画像」を指定 ■案2.画像アップロードするだけ ・「元画像」のみを保存 ・縮小画像表示は、「元画像」にその都度GDやImagickで大きさを指定 ■質問 ・ほとんど「案1」で実装すると思うのですが、「案2」だと何がマズいのでしょうか? ・事前作成せずにその都度処理するので、もしかすると画像表示とかが遅くなるのでしょうか? ・それぞれのメリット/デメリットを教えてください

    • ベストアンサー
    • PHP

専門家に質問してみよう