• 締切済み

CGIで画像更新??

初めて投稿します。 短い間隔でサーバに送られてくるJPEG画像をcgiか何かを使って一定間隔で更新するホームページを作りたいのですが・・・ 数少ない知識を使っては見たのですが、 META content="text/html; charset=shift_jis" http-equiv=Content-Type META http-equiv="refresh" content="20" META HTTP-EQUIV="Pragma" CONTENT="no-cache" これだと、リロードの時に画像が上から表示されるので、シャッターを切っているみたいで使用できないと言われてしまいました。 特に言語は問いませんので宜しくお願いします。

みんなの回答

  • Sam_A
  • ベストアンサー率33% (6/18)
回答No.5

#No,4コメント返答です。 画像が送られてくるのが約五秒間隔だとして画像保存に約1秒かかと仮定。(約6秒) *:画像の更新が約1秒で切り替わる。 マージンに2秒用意。 最低8枚くらいが妥当?(約8秒周期) プライマリーバッファとセカンダリーバッファの二枚構成にするとして 8*2で表裏合計で16枚構成が理論上安全粋かも?(あくまで個人的な意見なので参考程度と思っておいてください。) あとは実際の稼動タイミングを見ないとあくまで理論上なので、色々な要因により上下すると思います。 でもコメントを見ますと1バッファ20枚構成のようですので上記の処理とは根本的に状況はかわると思います。

  • Sam_A
  • ベストアンサー率33% (6/18)
回答No.4

○自分のサーバ環境で試したのですが、問題なく動いています。(静的にJpeg画像を4枚配置した場合。) *:Apache2.0.44(Win32) ○詳細が分からない点があり、確認したいのですが >短い間隔でサーバに送られてくるJPEG画像 とはどのくらいの間隔でサーバに送られてくるのでしょうか?(動的に画像が更新されると言うことですよね?) また、画像ファイル命名規約はどのようにされているのでしょうか? もし、動的に画像が送られてくるのでしたらWバッファリングや書き換えのロック&アンロックなどの仕組みの必要性があるかもしれません。 (画像書き換えが終わるよりも画像切り替えタイミングの方が速かったら更新が間に合わなくて古い画像が表示されるなど) ○Wバッファリング作成のヒント: (実際に原因がまだ特定されていませんのでスパイク(実現できるかテスト版を作成)していませんが参考までに) 今は4枚更新と成っていますが、例えば8枚に増やし、前4枚(No,0~No,3)は表示用で後の4枚(No,4~No,7)は書き込み用とし、前4枚が表示している間に後4枚が書き込み作業を行い、後4枚を今度は表示ように切り替えるなど。(2つのバッファを交互に切り替える。更新タイミングに合わせて枚数調節する。) ○また、差し支えがありませんのでしたら、どのような事に使用されるのか使用目的をお聞かせ願えないでしょうか?(ストレートじゃなくても比喩的な表現でかまいませんので) 使用目的がハッキリしていたら、別のアドバイスもできるかもしれませんし、もっと良いアイデアも提示できるかもしれません。

shinmat1195
質問者

補足

○詳細が分からない点があり、確認したいのですが >短い間隔でサーバに送られてくるJPEG画像 とはどのくらいの間隔でサーバに送られてくるのでしょうか? →現在は5秒毎に画像を送信しています また、画像ファイル命名規約はどのようにされているのでしょうか →画像ファイル名を決め、その後ろに番号を振り、最大値(5だとすれば5枚)のループです 更新すると表示されるというのは、1回目の表示の際は、ちゃんと表示されるのですがずーっと見ていても更新されてないような感じなのです。 でもこれは、枚数を多くすることで回避できそうな感じがしてきました(何時間もそのページを見ているるひともいないと思いますので)今後は、20枚ぐらいのループで対応したいと思います。(大丈夫ですよね?)

  • Sam_A
  • ベストアンサー率33% (6/18)
回答No.3

>他の端末経由でサーバを見に行った時に プロキシサーバのことでしょうか? キャッシュコントロールでノーキャッシュ設定でも駄目でしたのでしょうか? -------------------------- <META HTTP-EQUIV="Pragma" CONTENT="no-cache">

shinmat1195
質問者

補足

いえいえ、このファイルをサーバにUPして自分の端末から見に行ったときです。 いただいたキャッシュコントロールの部分を書いては見たのですが、「最新の情報に更新」を選択すると切り替わるみたいです。ちなみにtest00.htmlのないようです。 サーバは、IIS5.0です。 ローカルにファイルを置くとうまくいくんですが・・・ サーバ側の問題でしょうか? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Pragma" CONTENT="no-cache"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>タイトル</title> <script language="JavaScript"> <!-- img_number = 4; images = new Array(); for( i=0; i<img_number; i++ ){ images[i] = new Image(); images[i].src = "./anime" + i + ".jpg"; } function change(imgno){ clearTimeout(timerID); if( imgno < images.length ){ document.anime.src = images[imgno].src; timerID = setTimeout("change(" + (imgno+1) + ")", 500); }else{ timerID = setTimeout("change(0)", 500); } } //--> </script> </head> <body onLoad="timerID=setTimeout('change(0)',500)"> <img src="./anime1.jpg" name="anime" alt="img"> </body> </html>

  • Sam_A
  • ベストアンサー率33% (6/18)
回答No.2

CGIかPHPとJavaScriptで実現可能ではないでしょうか? ファイル名「anime0.jpg anime1.jpg anime2.jpg anime3.jpg」のjpg画像を4枚用意して下さい。 下記のサンプルHTMLを一緒のディレクトリに入れれば一意の画像更新(アニメーション)が可能です。 後は送られてくる画像ファイル(ファイル命名規約などの仕組み)をCGIかPHPなどで仕組みを組んでやれば可能だと思います。 時間の間隔は下記ソースの5000の所を変更して調節して下さい。 的違いならゴメンナサイ。 sample.html-------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>タイトル</title> <script language="JavaScript"> <!-- img_number = 4; images = new Array(); for( i=0; i<img_number; i++ ){ images[i] = new Image(); images[i].src = "./anime" + i + ".jpg"; } function change(imgno){ clearTimeout(timerID); if( imgno < images.length ){ document.anime.src = images[imgno].src; timerID = setTimeout("change(" + (imgno+1) + ")", 5000); }else{ timerID = setTimeout("change(0)", 5000); } } //--> </script> </head> <body onLoad="timerID=setTimeout('change(0)',500)"> <img src="./anime1.jpg" name="anime" alt="img"> </body> </html>

shinmat1195
質問者

お礼

スクリプトまで書いていただいてありがとうございます。 仕事の関係で今は試行できませんが、あとで必ず実行してみます。

shinmat1195
質問者

補足

この間やっと試行できましてやってみたらばっちりだったのですが、他の端末経由でサーバを見に行った時に、どうも同じ画像が繰り返し出ているような感じがしました。ブラウザの更新ボタンで何とかなってるので問題はないかと思いますが、ブラウザのキャッシュの問題なんですかね?

  • KUJIYA
  • ベストアンサー率34% (53/152)
回答No.1

上のmetaタグから考えると、001.jpgという画像の内容が どんどん書き換えられていく場合を考えているように思います。 だったら、こんな方法はどうでしょう。 javaで書かれたスライドショーのソフトを利用し、 保存則を001.jpg上書きではなくて、002.jpg 003.jpgと カウントさせ、10個ぐらいファイル名を決め、ループさせて いる間にファイルを書き換えるというのはどうでしょう。 http://www.yo.rim.or.jp/~nakagawa/WWW/IMG/ImageChanger.html 1つのファイルが短時間で書き変わる場合、上書きアップロード中に HTMLからファイルを呼び出しても表示が出来ないはずです。 これを回避するためには複数の画像を順次更新する方法が 適当かと思いますが、表示とアップロードが当たってしまえば 同じ失敗になります。 回避するためにはファイル数を増やすか、ロード回数を 減らすしかなさそうです。 ファイル名が固定されれば、あとはJAVAでスライドさせれば シャッターを切っているみたいでもちょっとした効果が 期待できそうです。 で、結局はライブカメラのようにすると言うことでしょうか? だったら、こんな方法も。 http://www1.seaple.icc.ne.jp/tnetk/livecamera.htm シャッターを切っているみたいなのがダメということは どんな切り替わり方を期待しているのでしょう?

参考URL:
http://www.yo.rim.or.jp/~nakagawa/WWW/freejava.html
shinmat1195
質問者

お礼

早速の回答ありがとうございます。 ちょっと今はできませんが、あとで確認してみます。 本当にありがとうございます

関連するQ&A