• 締切済み

GDモジュールについて

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

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

みんなの回答

  • zebedeer
  • ベストアンサー率66% (80/121)
回答No.1

>うまくいきません。何が、おかしいのか、教えてくだされば。 どううまくいかないんでしょうか?何を、やったのか、教えてくだされば。 ># if (open(OUT, ">d040805.jpg")) { ># binmode($fdata); ># print OUT $fdata; ># close(OUT); ># } コードが無茶なのは即興だから? $src_img1 = GD::Image->newFromJpegData('d040805.jpg'); print $src_img1->jpeg (); の出力結果が正しいjpegになってる? (うちGD入ってないんで確認できんけど)

参考URL:
http://member.nifty.ne.jp/hippo2000/perltips/GD.html
yuki_chan
質問者

お礼

実は、クライアントからアップロードされたデータを GD::Image->newFromJpegData で、取り込もうとしたわけです。 一旦、サーバ上のディスクに保存後のjpgファイルでしたらうまくいくようです。

関連するQ&A

  • 画像の複数登録についての質問です。

    画像を複数登録したいんですが500エラーが出てしまいます。 htmlから <input type="file" size="50" name="img1_1"> <input type="file" size="50" name="img1_2"> として、cgiにsubmitします。 cgi側でファイル名をデータ番号に変えて保存します。 例) aaaaa.jpg ↓ 1234.jpg ---cgi--- if ($param{'img1_1->name'} ne ""){ if ($param{'img1_1->name'} =~ /(\.gif|\.jpg|\.jpeg|\.pig|\.bmp)$/ ) { $extension = ($param{'img1_1->name'} =~ m/\.([^\.][0-9a-zA-Z]*)$/); $extension = $1; $filename1_1 = $upload_dir.$param{'data_num2'}."_1".$extension; if (open(OUT, ">$filename1_1")) { binmode(OUT); print OUT $param{'img1_1'}; close(OUT); } } } if ($param{'img1_2->name'} ne ""){ if ($param{'img1_2->name'} =~ /(\.gif|\.jpg|\.jpeg|\.pig|\.bmp)$/ ) { $extension = ($param{'img1_2->name'} =~ m/\.([^\.][0-9a-zA-Z]*)$/); $extension = $1; $filename1_2 = $upload_dir.$param{'data_num2'}."_2".$extension; if (open(OUT, ">$filename1_2")) { binmode(OUT); print OUT $param{'img1_2'}; close(OUT); } } } ------------ <input type="file" size="50" name="img1_1"> か <input type="file" size="50" name="img1_2"> のどちらか一方に画像ファイルを指定すれば大丈夫なんですが 両方画像を入れてしますと500エラーになってしまいます。 どのように修正すればいいんでしょうか?

    • ベストアンサー
    • Perl
  • 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で作ります。 そのトップページにいつも変化する所があるので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
  • gifcat.plの挙動について。

     埋め込み式カウンターを作っているのですが、gifcat.plの画像の出力の方法が分かりません。 ***count.cgi***********************  require "./gifcat.pl";  open(OUT, "> out.gif");  binmode(OUT);  print OUT &gifcat'gifcat(@imgs);  close(OUT);  exit 0; ***count.cgi*********************** ***html内**************************  あなたは<IMG src="./count.cgi">人目。 ***html内************************** で、画像は連結されるんですが、それをhtml内に出力させるにはどうしたらいいのでしょうか? 結合画像が、out.gifなので、 あなたは<IMG src="./out.gif">人目。 というのなら分かるんですが。

    • ベストアンサー
    • CGI
  • 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
  • 普通の 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
  • ランダムスクリプトの仕様を変更したい

    以下ソースはランダムに画像を差し替えるスクリプトですが、これを利用して画像ではなくhtmlファイルを差し替えるようにしたいのですが可能でしょうか? #!/usr/bin/perl $n = 3*60*60; # 画像を変更する秒数 $imgdir="./image/"; if(!opendir(DIR,$imgdir)){ print "Content-type: text/html\n\n"; print "Directory open error.\n"; exit(1);} $k = @file = grep /\.(?:jpg|gif)$/, readdir(DIR); closedir(DIR); $a = int(time / $n) % $k; open(IMAGE, "$imgdir$file[$a]"); binmode(IMAGE); $size=read(IMAGE,$image, -s IMAGE); close(IMAGE); if($file[$a] =~ /\.jpg$/){print "Content-type: image/jpeg\n\n";} else {print "Content-type: image/gif\n\n";} binmode(STDOUT); print $image; exit; ど素人なもので試行錯誤しております(汗)。どうぞよろしくお願い致します。m(_)m

  • 画像ファイルが崩れる

    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
  • 下記の様に、単一の画像ファイル「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
  • GDで画像表示

    GDのimagejpeg()などでJPGバイナリをブラウザに送信することができますが、<img scr= のような所に画像を表示できませんか? やりたいことは、xx.jpgを640,480にリサイズしてyy.phpが出力するHTMLタグの<img srcの部分に640,480のサイズで画像を表示することです。 xx.jpgはユーザが適当なサイズでアップロードする画像です。 640,480にリサイズした画像を保存してから<img srcで表示するなら、それは可能だということが分かりますが、メモリ上で解決したいと思っています。

    • ベストアンサー
    • PHP