画像ファイルを指定してHTMLで表示する方法

このQ&Aのポイント
  • HTMLのBODY内に表示するCGIを使用して、画像ファイルを指定して表示させる方法についてご教授ください。
  • 特定のファイルに入っている複数の画像をHTMLで呼び出し、表示させることは可能でしょうか。
  • 不均一な大きさの画像を指定し、縦横サイズ内で縦横比率を保ったまま表示する方法を教えてください。
回答を見る
  • ベストアンサー

下記の様に、単一の画像ファイル「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
  • 回答数2
  • ありがとう数14

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

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

HTMLはともかく、CGIとしてはもちろん可能です。 その場合、通常は #!/usr/local/bin/perl use strict; use warnings; my $fileName = $ENV{'PATH_INFO'}; my $view = './images'.$fileName; my $extention; if( $fileName =~/.+\.(\w+)/){$extention = $1;} print "Content-type: image/$extention\n\n"; open IMG,"$view"; binmode IMG; binmode STDOUT; while(<IMG>){ print; } close IMG; __END__ かな。CGIのあるディレクトリにある/imagesフォルダー内のファイルを開きます。拡張子は何でもよい。  アクセスはこのCGI名がimage.cgiだとすると、 <IMG src="image.cgi/abc.jpg" border="0">  となります。 ★サイズを調整するなら、サーバーにperlMagick、imageMagickが必要です。これがあると、imageMagickはPhotoShop程度の機能を持つ画像処理ソフトですから、ファイル形式を変換したりサイズを調整したり、色を変えたり画像を回転させたり、枠をつけたり、複数の画像を連結したりと様々な処理ができます。 【参考サイト】 ImageMagick - FSWikiLite   http://tuka.s12.xrea.com/index.xcg?p=ImageMagick#p3 ImageMagick   http://mechanics.civil.tohoku.ac.jp/soft/node43.html Imagemagickの使い方   http://vision.kuee.kyoto-u.ac.jp/~nob/doc/imagemagick/imagemagick.html 48. ImageMagickで簡単に画像処理 - PHP TIPS:ITpro   http://itpro.nikkeibp.co.jp/article/COLUMN/20070704/276677/ 使用例) Lacoocan用アクセスカウンター(LaCounter.cgi):マニュアル ( http://iruka.la.coocan.jp/cgi/counter/LaCounter.html )

juniper_se
質問者

補足

ORUKA1951様 早速のご返答、有難うございます。 示して頂いた資料は、実行しようとしている内容を、 カバーしているものと思われます。 まずは、一通り読んで研究してみたいと思います。 有難うございました。

その他の回答 (1)

  • nine999
  • ベストアンサー率44% (512/1140)
回答No.1

CGIで処理する必要があるのか良くわからないのですが、a.jpg以外の画像を表示できるか?という質問なら可能です。 画像毎にCGIを作っても良いし、1つのCGIで切り換えても良いでしょう。ただし、切換のためには、CGIをかなり改良しなければいけません。 画像サイズを固定するには<IMG>タグの中で幅と高さを指定します。 横幅200、高さ150ならこうなります。 <IMG src="print.cgi" border="0" width="200" height="150">

関連するQ&A

  • Image::Magickを利用して、任意の縦横各サイズを指定したフレ

    Image::Magickを利用して、任意の縦横各サイズを指定したフレーム内に、 縦横比の違う複数の画像ファイルをHTNL側で指定して呼び出すPerlCGIを 作りたいのですが、今のところ下記のようなimg1.cgiとimg2.cgiが分かっています。 img1.cgiは、複数画像の入っているフォルダを指定してHTML側で呼び出せるのですが、 現状サイズ指定はできません。img2.cgiは、Image::Magickを利用してサイズ調整は できるのですが、HTMLからのファイル指定とができません。 指定したフォルダから任意のファイル名をHTMLから呼び出し、元画像の縦横比を 変えることなく、スクリプト内で指定した縦横サイズ内に最大の画像を表示させるには どの様にしたらよろしいでしょうか。ご教授頂ければ幸いです。 宜しく、お願いします。 【img1.cgi】 ===CGI=== #!/usr/bin/perl use strict; my $fileName = $ENV{'PATH_INFO'}; my $view = './gazou'.$fileName; my $extention; if( $fileName =~/.+\.(\w+)/){$extention = $1;} print "Content-type: image/$extention\n\n"; open IMG,"$view"; binmode IMG; binmode STDOUT; while(<IMG>){ print; } close IMG; ===HTML=== <IMG src="img1.cgi/ファイル名.JPG" border="0"> 【img2.cgi】 ===CGI=== #!/usr/bin/perl use Image::Magick; $newwidth = 100; $newheight = 100; $i = Image::Magick->new; $i->Read('./gazou/3.JPG'); $i->Scale(geometry=>geometry, width=>$newwidth, height=>$newheight); print "Content-type: image/gif\n\n"; binmode(STDOUT); $i->Write("jpeg:-"); exit; ===HTML=== <IMG src="img2.cgi" border="0">

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

    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
  • 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
  • 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
  • 普通の html に cgi を使って画像を・・

    ソースお手本表を見ながら質問タイトルのようなことをやりたいと思いました。 結果はHTMLを実行すると通信が1分から3分ぐらい通信を行い、最後には画像を表示しないようなります。 どこがおかしいのかおしえていただけないでしょうか? どうかお願いします。 ------------------------------------------------ #!/usr/local/bin/perl #use DBI; print "Content-type: image/jpeg\n\n"; open FH,"<image.jpg"; binmode FH; binmode STDOUT; print while(FH); close FH; ------------------------------------------------

    • 締切済み
    • CGI
  • Perl使用のアップローダーで、jpgだけアップロードできない。

    ●フォームのcgiは ---------- print "Content-type:text/html\n\n"; print "<FORM method='POST' action='2.cgi' enctype='multipart/form-data'>\n"; print "<INPUT size='40' type='file' name='upfile'> \n"; print "<INPUT type='submit' value='送信する'>\n"; print "</FORM>\n"; ---------- ●実際のcgiは ---------- require './cgi-lib.pl'; print "Content-type:text/html\n\n"; #フォームからのデータを受け取る &ReadParse; #ファイル名を指定する $fnme = 'sample'; ################## # 拡張子を求める # ################## $substrings1 = "\\"; $ichi = rindex $in[1], $substrings1; $search_moji = substr($in[1], $ichi); $substrings2 = "."; $substrings3 = "\""; $start_position = index $search_moji, $substrings2; $start_position = $start_position; $finish_position = index $search_moji, $substrings3; $moji_count = $finish_position - $start_position; $file_type = substr($search_moji,$start_position,$moji_count); $fnme = $fnme . $file_type; # 受信データを書き込む open OUT,">$fnme"; binmode OUT; print OUT $in{'upfile'}; close OUT; $mes = '書き込みが完了しました。'; #完了メッセージ print <<"HTML"; Content-type: text/html <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </HEAD> <BODY> $mes </BODY> </HTML> HTML exit; ---------- です。 txt、bmp、gif、xlsはテストしたところちゃんとアップロードされましたが、jpgだけができません。 特に制限はかけたつもりはないのですが、どこが原因でjpgのみダメなのでしょうか?

    • ベストアンサー
    • Perl
  • CGIで画像ファイルのアップロード

    CGIで画像をアップロードできる掲示板をつくっているのですが、 gif、png、bmp、jpgなどの画像ファイルの縦横のサイズを取得する方法がわかりません。 縦横の比率を変えないでサムネイル表示させたいと思っているのですが、どうしたらよいでしょうか??

    • ベストアンサー
    • Perl
  • jpg画像が表示されない

    さくらインターネットの3GBの共有サーバを契約しました FFFTPというソフトでアップしましたがJPG画像が表示されません 独自ドメインで使用しています <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head><title>タイトル</title></head> <body><p><img src="title.jpg"></p> </body> </html> というHTMLファイルなのですがHPに ×マークででてしまいます title.jpgというファイルはindex.htmlと同じフォルダにアップしてます わかる方教えてください