• ベストアンサー

GD.pmで作成した画像を保存する方法

GD.pm 2.32 + Perlで、作った画像の保存を試みています。 しかし保存されません。 $png_data = $myImage->png; open (DISPLAY,"test.png") || die; binmode DISPLAY; print DISPLAY $png_data; close DISPLAY; フォルダのパーミッションは777 test.pngのパーミッションは666 原因は分かりますでしょうか。 宜しくお願いいたします。

  • abiru
  • お礼率67% (37/55)
  • Perl
  • 回答数1
  • ありがとう数1

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

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

至極基本的なことです。 ファイルを書き込みモードで開いていないからです。 open (DISPLAY,">test.png") || die;

abiru
質問者

お礼

(;゜ロ゜)ハッ お恥ずかしい。 ありがとうございました。 お手間おかけしました。

関連するQ&A

  • perlでGD::Graph。実行でエラー

    OS: RedHatLinux7.2 perl -v : This is perl, v5.6.2 built for i686-linux HttpErrLog: display: Unable to connect to X server (). Premature end of script headers: /XXX/XXX/XXX.cgi GD::Graphを用いたperlスクリプトを実行すると、上記のようなエラーとなってしまいます。 コマンドでの実行では問題無く動作します。cgiのパーミッションも確認しました。ソースは以下の通りです。作業が進まなくて困っています。 どなたかお知恵をお貸しください。 perl.cgi: --------------------------------------------------------- #!/usr/bin/perl -- use strict; use GD::Graph::bars; my @xLabels = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ); my @data2002 = qw( 17 19 26 38 56 64 67 53 40 29 21 13 ); my @data2003 = qw( 19 24 27 41 56 69 75 60 44 33 22 15 ); my @data = ( \@xLabels, \@data2002, \@data2003 ); my $graph = GD::Graph::bars->new( 800, 600 ); $graph->set( title => "Rainfall 2002/2003", y_label => "Millimetres" ); my $image = $graph->plot( \@data ) or die( "Cannot create image" ); open( OUT, "| display -") or die( "Cannot display image: $!" ); binmode OUT; print OUT $image->png(); close OUT; ---------------------------------------------------------

    • ベストアンサー
    • Perl
  • GD.pmでアルファチャンネルを持ったPNG合成がうまくいきません

    GD.pm 2.32 + Perlで、二つのPNG画像合成を試みています。 しかしpngのアルファチャンネル部分がスムーズに合成できません。 以下のソースで合成はできたものの、アルファチャンネル部分が透明ではない通常のドットとして合成されます。 1.png・・・赤い四角い画像 2.png・・・白い丸画像で、境界線はアルファチャンネル(PNG32) -----ここから $png_image = "1.png"; $png_image2 = "2.png"; $image = new GD::Image(100,100); $image2 = newFromPng GD::Image($png_image); ($image2_width,$image2_height) = $image2->getBounds() ; $image->copy($image2,0,0,0,0,$image2_width,$image2_height); $image3 = newFromPng GD::Image($png_image2); ($image3_width,$image3_height) = $image3->getBounds() ; $image->copy($image3,0,0,0,0,$image3_width,$image3_height); $image = &image_tranparent_comp($png_image, 1, 1, $image); print "Content-type:image/png\n\n"; binmode STDOUT; print $image->png; -----ここまで 文字数の関係で「&image_tranparent_comp」を省略しています。 Googleで検索すれば、参考にしたサイトが出てきます。 原因がお分かりでしたら教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • GDモジュールについて

    GDモジュールの中に、「newFromJpegData」がありますが、 使用例: $src_img1 = GD::Image->newFromJpegData($fdata) うまくいきません。何が、おかしいのか、教えてくだされば。 $fdataの中身は、 # if (open(OUT, ">d040805.jpg")) { # binmode($fdata); # print OUT $fdata; # close(OUT); # } とやれば、jpegファイルになります。

  • CGIスクリプトのブラウザから実行エラー

    OS:  RedHatLinux7.2 perl -v :  This is perl, v5.6.2 built for i686-linux HttpErrLog:  display: Unable to connect to X server ().  Premature end of script headers: /XXX/XXX/XXX.cgi GD::Graphを用いたperlスクリプトをブラウザから実行すると、 上記のようなエラーとなってしまいます。 コマンドでの実行では問題無く動作します。 「print」のみの簡易cgiで試行しましたが、問題なく実行されます。 cgiのパーミッションも確認しました。 ソースは以下の通りです。 作業が進まなくて困っています。 どなたかお知恵をお貸しください。 perl.cgi: --------------------------------------------------------- #!/usr/bin/perl -- use strict; use GD::Graph::bars; my @xLabels = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ); my @data2002 = qw( 17 19 26 38 56 64 67 53 40 29 21 13 ); my @data2003 = qw( 19 24 27 41 56 69 75 60 44 33 22 15 ); my @data = ( \@xLabels, \@data2002, \@data2003 ); my $graph = GD::Graph::bars->new( 800, 600 ); $graph->set( title => "Rainfall 2002/2003", y_label => "Millimetres" ); my $image = $graph->plot( \@data ) or die( "Cannot create image" ); open( OUT, "| display -") or die( "Cannot display image: $!" ); binmode OUT; print OUT $image->png(); close OUT; ---------------------------------------------------------

  • canvasで作成した画像をperlでアップロード

    恐れ入ります。 function upImg() { var base64 = board1.toDataURL('image/png'); var request = { url: 'https:~canvas.cgi', method: 'POST', params: { image: base64.replace(/^.*,/, '') }, success: function (response) { console.log(response.responseText); } }; Ext.Ajax.request(request); } として、perlで送信された画像データを受け取ってサーバーの任意のディレクトリに保存をしたいのですが、方法が分かりません。 perl側では、単純に open(OUT, ">./upload/gazouURL"); binmode(OUT); while(read($fileName, $buffer, 1024)) { print OUT $buffer; } close(OUT); としています。$fileNameとして受け取るパラメータはjavascriptからどのように送信されているのでしょうか。ご教授いただけたらありがたいです。よろしくお願いいたします。

  • Perl 教えてください。

    下記のような簡単なスクリプトなんですが、なぜかサーバーにアップすると動きません。 ローカルでコマンドプロンプトから直接実行するとまともに動作します。 パーミッションは「755」と「705」でやってみましたが。 perlのパスは合っていますし、実際同じ場所に置いた他のCGIは動作します。 #!/usr/bin/perl open (DT, "<./data/***/***.csv") or die "File '***.csv' Open Error."; @data = <DT>; $data[0] = ",,,,,,\n"; open (OUT,">./data/***/***1.csv") or die "File '***1.csv' Open Error."; print OUT @data; close (DT); close (OUT); 原因が分からず困っています。 解決策でなく、原因と思えるだけの回答で結構ですので何卒よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 画像ファイルの読み込みについて

    Perlで、サーバー上に保存してある画像ファイル(tempというフォルダーに保存してあるjpg形式の画像)を入力する場合、どうすればいいのでしょうか? 単純に open(IN, "< $filename"); binmode(IN); fille_data{'temp1'} = <IN>; close(IN); ではだめですよね?

    • ベストアンサー
    • Perl
  • Encode.pmで「髙」(ハシゴ高)が文字化けする

    Perl5.8で、EUCで保存されたテキストファイルを読み込み、Shift-JISで保存しようとしてます。 EUCからShift-JISへの変換は、Encode.pmを使用しています。 テキストファイルに「髙」(ハシゴ高 0xFCE2)や「﨑」が入っていた場合、変換されたデータは「?」(0x3F)になってしまいます。 「髙」や「﨑」をPerlを使用してEUCからShift-JISする方法はありませんでしょうか? ====================================== use Encode qw/ from_to /; open IN, "data.txt"; $data = <IN>; close IN; from_to( $data, 'euc-jp','shiftjis'); open OUT, ">data2.txt"; print OUT $data; close OUT; ====================================== 宜しくお願いします。

    • ベストアンサー
    • Perl
  • ファイルの3行目までを出力したい

    Perl初心者です。 test.txtというファイルがあって、その中の1行目から3行目までを 出力したい場合はどうしたらいいでしょうか? open(FILE,"test.txt") || die "Open Error.\n"; @data = <FILE>; close(FILE); foreach (@data) { print $_; } これだと、ファイルの中身が全て出力されてしまいます。

    • ベストアンサー
    • Perl
  • HDDを壊しやすいデータの保存方法?について

    下記の様なPerlプログラムで、毎日大量のgif(1日20000個のgif)をHDDに保存しています。 100日程度経過すると、ディレクトリ構造が壊れたり、かなりの頻度でHDDが論理障害を起こします。 WindowsXPで外付けUSB-HDDに保存しています。 HDDの限界なのか、単に、プログラムの書き方が間違っているのでしょうか? #perlのgif保存プログラム1日1回起動 for my $num (1..20000) { open(OUT, ">./gif/$year$month$day$num") ; binmode OUT; print OUT &GetImg($image); close (OUT); sleep 1; }

専門家に質問してみよう