• ベストアンサー

画像が表示できません。

print "Content-type: image/gif\n\n"; open(IMG,"./1.gif"); $img =(IMG); close(IMG); print $img; 画像ファイル "http://0.0.0.0/a.cgi" は壊れているため、表示できませんでした。 となり表示ができません。

  • Perl
  • 回答数3
  • ありがとう数8

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

  • ベストアンサー
  • t140
  • ベストアンサー率39% (59/150)
回答No.3

#2ですが、いまひとつ書き方がよくなかったので再度 open(IMG, "./1.gif"); binmode(IMG); binmode(STDOUT); # STDOUTにもbinmode必要だったかな? print "Content-type: image/gif\n\n"; while (read(IMG, $img, 1024)){ print $img; } close(IMG);

その他の回答 (2)

  • t140
  • ベストアンサー率39% (59/150)
回答No.2

#1さんの回答と併せて以下の変更もおこなってみてください。 $img =(IMG);     ↓ binmode(IMG); while (<IMG>){ print; }

  • bgbg
  • ベストアンサー率53% (94/175)
回答No.1

OSはWindowsでしょうか? openした後に binmode IMG; をしましょう。 Windows上でバイナリファイルはそのままでは扱えません。

関連するQ&A

  • perlで画像表示

    htmlファイルから<img src="./aa.cgi">と書いて連続した画像を表示させたいのですが @aa =(1,2,3); foreach(@aa){ open(IMG, "./$_.gif"); binmode(IMG); binmode(STDOUT); print "Content-type: image/gif\n\n"; read(IMG, $img, 1024); print $img; close(IMG); } こう書いたらだめなのでしょうか?

    • ベストアンサー
    • Perl
  • 画像ファイルが崩れる

    Perlで、CGIを作成しています。 GIF画像をCGI経由で表示させようと思っているのですが、なぜか、画像が崩れてしまいます。GIFだけではなく、Jpegでも同じです。しかし、HTMLファイルの <img>タグでそのまま表示させようとすると、きちんと表示します。 どのようにすれば、崩れを抑えられますか? CGIソース---------------------- #!/usr/local/bin/perl $imgsrc="number/0.gif"; print "Content-type:image/gif\n\n"; open(IMG,$imgsrc); binmode(IMG); print <IMG>; close(IMG); -----------------------------EOF HTML---------------------------- <html> <head> </head> <body> <img src="cgi/image.cgi" width="28" hegiht="31"> </body> </html> ------------------------------EOF gif画像は、 http://www.akikobrand.com/icon/img/10/6/0.gif を使わせていただきました。(個人的な使用です)

    • ベストアンサー
    • CGI
  • 画像サイズの指定方法

    $img = 'image.png'; open(IMG,"$img"); $byte = -s $img; print "Content-type: image/gif\n"; print "Content-length: $byte\n\n"; print <IMG>; close(IMG); exit; 上記のように画像を表示させているのですが、縦横サイズは どのように調整すればよろしいのでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • cgiで表示するhtmlページ内でバイナリ画像を出力したい

    cgiで表示するhtmlページ内でバイナリ画像を出力したい 「CGI 画像出力」でググったページで下記のコードがありました。 下記コードは、 Content-typeをimage/gif等にして バイナリを print すれば表示される という書き方になっていると思いますが、 content-typeがtext/html のページ内でバイナリをprintした場合 バイナリが文字列としてグシャァァァと表示されてしまいます。 ------- $view = 'aaa.jpg'; print "Content-type: image/jpeg\n\n"; #コンテンツタイプを指定する open IMGG,"$view"; #ファイルハンドル IMGGに画像ファイルを読み込む binmode (IMGG); #画像なのでバイナリモードに設定する print <IMGG>; #ファイルハンドルを画面に書き出す close (IMGG); #ファイルハンドルを閉じる exit; ------- content-typeがtext/htmlの状態でバイナリの画像を表示するには どうすればよいのでしょうか? cgiを2つ用意して、上記のコードを img src=~~.cgi という形で 呼び出すしかないのでしょうか?

    • ベストアンサー
    • Perl
  • CGIで画像表示されなくGIF89aXとなります、なぜ?

    CGI初心者です。 CGI可のレンタルサーバーで、CGIで画像を表示させたいのですが、 ブラウザで見ると画像がでません。 画像の位置、パーミッションなどは何度も確認しました。 転送はバイナリです。 ------------- #!/usr/bin/perl $view = 'r1.gif'; print "Content-type: image/gif\n\n"; open IMGG,"$view"; binmode (IMGG); print <IMGG>; close (IMGG); ------------------------ このCGIのhttp:~CGIを直接打つとブラウザに 「GIF89aX」とでて画像が出ません。 画像をhttp:~で直接指定するとちゃんと画像が出ます。  なぜでしょう? すぐに回答ほしいです。 どなたか詳しい方、よろしくお願いしま~す。

    • ベストアンサー
    • CGI
  • HTMLのファイルにCGI処理結果を表示する

    まずトップページはhtmlで作ります。 そのトップページにいつも変化する所があるのでcgiで処理を施したものをhtmlに貼り付けたいと思っています。 その場合に例えば画像を出力させる場合は <IMG src="cgi-local/top.cgi"> で指定し、 #!/usr/local/bin/perl print "Content-type: image/jpeg\n\n"; open FH,"<../image.jpg"; binmode FH; binmode STDOUT; print while(<FH>); close FH; をやれば動かせますが、これを画像ではなくhtmlを表示させるためには print "Content-type: image/jpeg\n\n"; を print "Content-type: text/html\n\n"; に変更する事により可能だと思いやってみたのですが、うまく出力できませんでした。 cgi処理をうまくhtmlに貼り付ける方法があるのでしょうか。どうか教えて頂けないでしょうか?お願します。(涙)

    • ベストアンサー
    • CGI
  • 画像とtxtファイルの表示

    現在CGIでtxtファイルが表示されるように print "Content-type: text/html; charset=euc-jp\n\n"; $count = 0; $viewline = 1; open(IN, "A.txt"); while(<IN>){ if($count == ( $viewline - 1)){ $line = $_; last; } $count++; } close(IN); print "$line\n"; としています。 ここでさらに画像も一緒にCGIで表示させたいのですが、そうゆうことはできるのでしょうか? できるのであれば教えて頂きたいです。調べてみたのですがなかなか見つからなくて・・・。 よろしくお願いします。

    • 締切済み
    • CGI
  • Perl内でPHPの出力結果を表示したい

    Perl製のCGI内で、PHP製のランダムバナー表示CGIを呼ぼうとしたのですが、下記のようなエラーが出てしまいました。 いろいろ試行錯誤したのですが、お手上げです。 どのように修正したらよいでしょうか? なお、ランダムバナー表示CGI 単体だけを実行したときは、正常に表示されています。 [index.cgi]  #!/usr/local/bin/perl  print "Content-type: text/html\n\n";  print "<HTML>\n<BODY>\n\n";  $ImgFileName="./ad.php";  open(IN, "$ImgFileName |");  while (<IN>) {    $str=$str.$_;  }  close(IN);  print $str; [ad.php]  <?php  $_1 = ('<img src="http://example.jp/a.gif">');  $_2 = ('<img src="http://example.jp/b.gif">');  $img_arry = array("$_1","$_2");  srand((double)microtime()*1000000);  $num =array_rand($img_arry);  $image = $img_arry[$num];  echo "$image";  ?> [表示された内容] ./ad.php: ?php: No such file or directory ./ad.php: line 2: syntax error near unexpected token `('' ./ad.php: line 2: `$_1 = ('【a.gifの画像】);'

  • gifcatで生成された画像にリンクを貼りたい

    自分用にカウンターcgiを作っています[ファイル名count.cgi] gifcat.plで連結して表示されたカウンター画像に リンクを自動で付けたいです。 (カウンター画像をクリックすると指定されたページにいけるようにしたい) count.cgiの出力部分は 1行目 print "Content-type: image/gif\n\n"; 2行目 print &gifcat'gifcat(@numimg); ですが、2行目に細工して 1行目 print "Content-type: image/gif\n\n"; 2行目 print <a href=http://XXX.jp> &gifcat'gifcat(@numimg) テスト</a>; としてもうまく行かないです。 皆さんお手数ですが、良い解決方法があれば教えてください。 宜しくお願いします。

    • ベストアンサー
    • CGI
  • 下記の様に、単一の画像ファイル「a.jpg」を呼び出して、

    下記の様に、単一の画像ファイル「a.jpg」を呼び出して、 HTMLのBODY内に表示するCGIが在るのですが、 これを、特定のファイルに入っている複数の画像を、 HTML側で指定して呼び出し、表示させる事は可能でしょうか。 また、その際に、大きさの不均一な画像を指定した 縦横サイズ以内に、元の縦横比率を保ったまま表示させる事は可能でしょうか。 その方法などご教授頂ければ幸いです。 宜しく、お願いします。 #!/usr/bin/perl $view = 'a.jpg'; print "Content-type: image/jpeg\n\n"; open IMGG,"$view"; binmode (IMGG); print <IMGG>; close (IMGG); exit; <body> <IMG src="print.cgi" border="0"> </body>

    • ベストアンサー
    • CGI

専門家に質問してみよう