画像ファイルの作成方法

このQ&Aのポイント
  • 画像ファイルを作成する方法を教えてください
  • 外部の画像ファイルを読み込まずにperlファイルで画像を作成する方法を知りたいです
  • Perlの勉強段階で使わないようにしたい方法を教えてください
回答を見る
  • ベストアンサー

画像ファイルの作成方法

私は、外部の画像ファイルを読み込まずにperlファイルで表示、ファイル作成をすればよいか困っております。 プログラムは、 読み込み⇒画像作成⇒終了 というような感じです。 Perlの勉強段階などでモジュールなどを使わないようにしたいと思っています。 今までで実験してみた方法は、gifファイルを拡張子.txtに変えてそのファイルをコピーしプログラムに貼り付けたものです。 画像作成 (flockは除いています。) #!/usr/bin/perl open(OUT,"> test.gif"); binmode(OUT); print OUT <<'EOM'; コピーしたもの EOM exit; 以上の文でファイルは作成されているものの、画像を表示すると×状態です。 どのように修正すればよいかご指摘お願いします。

  • Perl
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • yuuki0229
  • ベストアンサー率70% (33/47)
回答No.1

binmodeするところまでは良いのですが、テキストエディタでバイナリデータを開くor保存する際に表示できない文字などでかなりの情報が失われます。 gifファイルをバイナリエディタで開いて以下のような表記で写していけば良いでしょう。 print OUT "\x47\x49\x46\x38\x39\x61 以下略"; #この先頭部分は"GIF89a"と直接記述しても大丈夫です。 バイナリエディタからのコピペで済ませたい場合は $hexstring = "47 49 46 38 39 61 ..."; $hexstring =~ s/\s//g; print OUT pack("H*", $hexstring); のようにpackを利用するなどです。 #質問文中のヒアドキュメントの場合、末尾に余分な改行が含まれてしまうことも問題の一つになっていると思います。 >Perlの勉強段階などでモジュールなどを使わないようにしたいと思っています。 画像データをフルスクラッチで出力することはPerlのプログラミングとは別分野の知識が多く必要になります。 画像フォーマット、さらにそこで使用されているデータ圧縮の技術、画像を加工する場合は画像処理に関しての知識も必要になるでしょう。 Perlの学習のために画像の操作を題材とするのはあまりお勧めしません。

参考URL:
http://ja.wikipedia.org/wiki/テキストファイル
taporu
質問者

お礼

ありがとうございます。 正しく作成することができました。 直接のコピーがだめだったんですね。

関連するQ&A

  • 画像ファイルが崩れる

    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
  • ファイル出力をUTF8NではなくてUTF8で行いたい

    おせわになります。 Shift-JISで記述したPerlで、ファイル出力をしようとしています。 ------------------------------------ #!/usr/local/bin/perl use encoding 'shiftjis'; $hoge="ほげ" open(OUT,">file.txt") binmode OUT; print OUT $hoge; close(OUT); ------------------------------------ 希望はUTF8での出力なのですが、UTF8Nで出力されてしまいます。 どのようにすればいいのかご教授よろしくお願いします。

    • ベストアンサー
    • Perl
  • 画像ファイルの変換

    CGI(perl)で、ホームページを作成しているものですが、事情があってjpegファイルから、gifファイルに変換する必要があります。 perlモジュールにそのような変換機能あるでしょうか?

    • 締切済み
    • CGI
  • SolarisからLinuxへコピーしたスクリプトについて

    Solaris上で動作しているPerlスクリプトがあるのですが、 Linux上で動作させることができないので、困っています。 原因を特定するため、Solarisからコピーしたファイルの 中身を、下記コードに入れ替えた場合と、新規にLinux 上で作成した場合を比べてみると、表示結果が異なります。 solarisからコピーしたファイルを表示すると、 「500 サーバ内エラー サーバー内で、実行中のプログラムが異常終了しました。」 と表示されます。 新規にLinux上で作成したファイルを表示すると、 問題なく表示されます。 これくらいしか分からないのですが、何かアドバイスを いただけないでしょうか? # file test.pl <-Solarisからコピーしたファイルを編集 script text executablerl # file test2.pl <-Linux上で新規作成 test.pl: a /usr/bin/perl script text executable ・コード #!/usr/bin/perl print "Content-type: text/plain\n"; print "\n"; print "Hello!World"; exit(0);

  • perlでCSV形式ファイルのアップロード方法

    perlでCSV形式ファイルのアップロード方法を教えてさい。 htmlで <HTML> <BODY> <FORM action="excel読み込み.cgi" enctype="multipart/form-data" method="post"> フレアシステムのファイル: <INPUT type="file" name="upload_file" size="60"><BR> <INPUT type="submit" value="読み込み"> </FORM> </BODY> </HTML> として、ファイル名の指定をして、読み込みボタンを押すと、excel読み込み.cgiを呼び出すのですが、プログラムの内容が表示されるだけで終わってしまいます。 excel読み込み.cgiのプログラムは以下の内容です。 #! c:/perl/bin/perl use CGI; $query = new CGI; $filename = $query->param('upload_file'); while(read($filename, $buffer, 2048)) { $file .= $buffer; } @files = split(/\\/, $filename); ($basename, $exp) = split(/\./, $files[-1]); $new_file = $basename . "." . $exp; # ファイルを指定ディレクトリにコピー #open(OUT, "> c:\\foo\\$new_file"); open(OUT, "> c:\\$new_file"); binmode(OUT); print(OUT $file); close(OUT); print "Content-type: text/html\n\n"; print "[$basename] [$exp]\n"; print "正常終了\n"; exit; CGIのプログラムを色々と調べて、別のないようにしても同じようにプログラムがそのまま表示されてしまいます。 どなたか教えてください。 宜しくお願いします。

  • 普通の 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でURLから画像ファイルを作成できますか?

    perlである別のサイトの画像をサーバーにコピーする手段はあるのでしょうか? たとえば、yahooのhttp://img.yahoo.co.jp/images/new2.gifをファイルにしたいです。 get_gazou.cgi にそのソースを記述して、アクセスしたら、指定のサーバー内にファイルを作るというものです。 wgetのperl版です。

    • ベストアンサー
    • Perl
  • CGI によるファイルのアップロード

    こんにちは。Perl初心者です。 ファイルのアップロードのプログラムを作ったのですが(と言っても書籍の丸写しですが..)サーバー上でエラーになってしまいます。どこが間違っているか教えて下さい。 環境:@niftyのホームページ(CGIは許可されています。), PC: Windows XP ソース: #!/usr/local/bin/perl use CGI qw(:standard); $file1 = param('file1'); open OUT, "> $file1"; while(<$file1>){   print OUT $_; } close OUT; $file2 = param('file2'); open OUT, "> $file2"; while(<$file2>){   print OUT $_; } close OUT; print <<"EOL"; Content-type: text/html <html> <body> Files have been uploaded.<br> $file1<br> $file2<br> </body> </html> EOL exit;

    • 締切済み
    • CGI
  • 「#!/usr/bin/perl --」でなければ動作しないのはなぜ?

    新しい職場に来て、あるCGIの設定を依頼されたのですが、どのような設定になっているのか、どのプログラムをアップしても「Internal Server Error」になってしまいました。 人に聞いて、「#!/usr/bin/perl」を「#!/usr/bin/perl --」としなければ動かないことまでは分かりました。 確かに、先に他の方が作成されたらしいCGIプログラム(単純な構成のものばかりです)ではすべて「#!/usr/bin/perl --」となってました。 こうしなければ、どんな簡単なプログラムでも絶対に動かないようです。 「*.cgi」というファイルが1つのみ(他の構成ファイルは他の形式)というプログラムならその方法で動いたのですが、複数の「*.cgi」ファイルで構成されているものはどうしても動きませんでした。 構成するファイルの中に、先頭に「#!/usr/bin/perl」の行がないファイルもあるのですが、もしかしてそのせいでしょうか? その場合、どうしたら解決できますか? そもそも何が原因なのでしょう? 今まで、色々な会社でCGIをいじってきましたが、初めての経験で戸惑っています。 FFFTPの設定(開業など)の問題ではないように思えるのですが、サーバーの設定がおかしいのでしょうか? 「#!/usr/bin/perl --」としなければ絶対に動かないというのは、どういう場合に起こる現象なのですか?

    • 締切済み
    • CGI
  • HP作成中、画像が表示されない

    初心者です。 HP作成の入門書を読みながら、タグをちまちま と打っているような段階です。 画像を載せようと、 <img src="○○○"> の中に、「載せたい画像のファイル名.gif」 を入れて、html形式でファイルを開いたのですが、 画像は表示されずに「×」と表示されます。 スペースが入っていたり、半角でない文字が入っているのかなぁと思い、何度も見直してみたのですが、 間違いはありませんでした。 そして、違う画像ファイルで試してみたところ、その ファイルはすんなり表示されるのです。 2つともgifファイルで、違う点といえば、前者は 携帯で撮った画像をPCのアドレスに送り、gif ファイルに変換したもので、後者は知り合いのHP から画像をコピーしてきたものです。 どうしたら前者の画像を表示できるようになるのでしょうか・・。 お願いします。