- ベストアンサー
IMGタグの中にPHP
こんばんは,最近PHPを勉強し始めて色々なサイトを見て回っているのですが,時折IMGタグの中に <img src="xxx.php?abc=012">のような形でphpが指定されていることがあります.HTMLの表示では,アクセスする度にこの部分の画像が入れ替わったりします. これはどういう動作をするのでしょうか.いくつか入門書を購入して勉強しているのですが,<?php~?>という風に書くんだよということしか掲載されておらず,上記の記述がどういう動作をするのか理解できません. また,オススメの参考書籍,ウェブサイトなど併せて教えていただけると嬉しいです.よろしくお願いします.
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
PHPには下記の様な画像出力関数があります。 imagejpeg() imagepng() imagegif() imagewbmp() しかも、画像の拡大/縮小,画像の合成,線や円の描写,画像形式の変換など、様々な事が出来ます。 ただし、画像処理は結構難しく書籍を参考にした位では極める事は無理だと思います。 (私も色々な書籍を読み漁りましたが結局基本的な事しか書いていませんでした。) 勉強する場合は自分のやりたい事を決めてネット上で[PHP JPEG 合成]等で検索しプログラムがあれば解析及び実験を繰り返すしかないと思います。 >アクセスする度にこの部分の画像が入れ替わったりします。 上記は多分下記の様なプログラムだと思いますので自分で画像を複数枚用意して実験してみて下さい。 <? $img[0]="001.jpg"; $img[1]="002.jpg"; $img[2]="003.jpg"; srand((double)microtime()*1000000); $randam = rand(0, 2); header("Content-type: image/jpeg"); $im = imagecreatefromjpeg("$img[$randam]"); imagejpeg($im); imagedestroy($im); ?>
その他の回答 (4)
- yambejp
- ベストアンサー率51% (3827/7415)
拡張子がphpであっても、中身はgifやjpgのファイル です。 普通サーバーは拡張子をみて、「このファイルは jpegファイルなんだなぁ」と判断したりするのですが phpの場合は「オレはjpegなんだよ」とプログラム で宣言する(headerとして)ことができるのです。 なので、phpが拡張子で画像が送られてきても なんの問題もありません。
お礼
回答ありがとうございます. サンプルのスクリプトを見ている中で回答の意味もよく理解できました.
- temtecomai2
- ベストアンサー率61% (656/1071)
ようするにですね、何らかのサーバ側処理をして HTML を出力するだけが PHP の使い方じゃないってことです。 普通は HTML を出力しますが、この場合は画像ファイルへの URL 文字列を出力しています。 そんなこたぁ HTML を出力している PHP の中で処理しちゃっても構わないんですが、今回の場合は画像 URL を処理する部分だけ別モジュールにしてるってことでしょう。 表示対象の画像ファイルがサーバにずっと存在し続けるファイルなのか、その一瞬のために動的に作成されたものなのかは今回の場合関係ありません。
お礼
返事が遅くなって申し訳ないです.回答内容を元に検索して色々なサイトみてまわって勉強していました. 明らかに知識が追いついていないんですが,サンプルを掲載しているサイトを見つけることができ,実際に自分でスクリプトを組んで動作確認できました.ありがとうございました.
- potch
- ベストアンサー率34% (24/70)
この動作はPHPに限らず、PerlなどのCGIでも再現することができます。(そのいい例が、アクセスカウンタですね。) PHPのスクリプトだけが書かれたファイルをサーバーにおき、そのファイルに<img>タグでアクセスすると、スクリプト内に記述した画像入出力によって、<img>で表示可能になります(多分、<img>じゃなくてもできると思うけど、そこは知らないです・・・。PHPに関しては初心者同然ですから・・・)。多分おなじHTMLファイル内にある、PHPスクリプトでも再現できるのではないでしょうか? その場合、srcに自身のファイル名を指定して、パラメータを渡せばいいと思います。(自信無いが・・・) 例えば、 HTMLファイル名: hoge.html <img> srcパラメータ: src="./hoge.html?aaa=100"
補足
申し訳ないです. 知識がなさすぎて回答をよく理解できていません. 例示していただいた内容がわからないです. <img src=".hoge.html?aaa=100">という意味でしょうか. これだとどういう動作をするんだろう・・・.
- litton101
- ベストアンサー率49% (58/118)
超初心者ですが、わたしもご質問のワザを使ったことがあります。 まったくの一例なんですが、グラフモジュールを使ってPHPでグラフ(といっ ても実体はJPG画像)を出力させる際、キャッシュが作用して過去に表示した 古い画像が優先的に表示されてしまうことがありました。キャッシュさせない よう設定しても改善されず困っていたのですが、結局<img src="xxx.php?abc=012"> などとすることで回避できました。要は↓のことです。 ご興味あれば参照してみてください。 データを変更したのに画像が更新されません。古い画像はまだブラウザに表示されてしまいます。 http://www.asial.co.jp/products/jpgraph/faq.php#55
補足
回答ありがとうございます. 質問の仕方が悪かったかもしれませんが, 知りたかったのはIMGタグのソースに画像ファイル(*.jpgや*.gif)以外が指定されてるところなんです. こういう指定をしたときにどういう動作をするのかがわかりませんでした.
お礼
回答ありがとうございます,返事が遅れて申し訳ないです. 例も載せていただいてとても分かりやすいです. PHPサンプルをみてデータの扱い方を見ると簡単に見えるんですが, なかなか良い書籍やサイトが見つからず, 1つの問題を解決するために長時間ネットをさまようような状態で難航しています. 今後もお世話になる機会があると思いますがよろしくお願いします.