Image::Magickで画像に文字を埋め込む方法

このQ&Aのポイント
  • PerlのImage::Magickモジュールを使用して、画像に文字を埋め込む方法について説明します。
  • コード例を示して、Image::MagickのAnnotate()メソッドを使用して画像に文字を追加する方法を説明します。
  • フォントや文字サイズ、位置などのパラメータを調整することで、画像に好きなテキストを追加することができます。
回答を見る
  • ベストアンサー

Image::Magickで画像に文字を埋め込む方法。

こんばんわ。 perlで、画像に文字を入れたいと思います。 そこで、ppmからImage::Magickを入れました。 そして、test.plに以下の様に記述しました。 #!/usr/local/bin/perl use Image::Magick; $p = new Image::Magick; $p->Read("img.jpg"); $p = $p->Transform( geometry=>"240x320" ); $p->Annotate(font=>'C:\Windows\Fonts\arial.ttf', pointsize=>20, fill=>'white', text=>'TEXTTEXTTEXTTEXT', x=>200, y=>150); $p->Write("img.new.jpg"); そして、同じフォルダにimg.jpgを置きtest.plを実行したところ、 画像は215?×320になりましたが、 文字は記述されていませんでした。 Image::Magick perlなどで、検索しているのですが、 なかなか解説しているサイトはありませんでした。 Annotate()の記述が違うのではないかと思うのですが、 正しい書き方を教えて下さい。 どうすれば、文字を載せれるのでしょうか? よろしくお願いします。

  • xphp
  • お礼率53% (24/45)
  • Perl
  • 回答数1
  • ありがとう数1

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

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

こちらが詳しいのでどうぞ・・・私のブックマークからめぼしいもの :: Cepheid :: - ImageMagickの使用例 | 画像へ文字を記入する ( http://www.ss.iij4u.or.jp/~somali/web/im_example/character.html ) ImageMagick - Image Processing and Display Package ( http://www.stat.ufl.edu/system/man/ImageMagick/www/perl.html#mani )  →ImageMagick - Image Processing and Display Package ( http://www.stat.ufl.edu/system/man/ImageMagick/www/perl.html#misc )

xphp
質問者

お礼

早速URLの紹介ありがとうございます。 1番上のサイトを一通り見て試してみたのですが、もしかして、一回サーバーにアップロードさせなくてはならないのでしょうか? ローカルでも使いたいのですが。

関連するQ&A

  • Image::Magickを使用して文字を画像にしたら日本語が文字化けを起こしてます

    画像に文字を入れたいと思い、OKwebで調べてましたら http://okwave.jp/qa4791790.html というのがあって参考にさせていただき早速以下のサイトよりスクリプトを使用してやってみました。 以下のサイトにスクリプトサンプルがあり早速設置してみました。 http://www.ss.iij4u.or.jp/~somali/web/im_example/character.html 以下のサイト http://foober.lolipop.jp/jpg.cgi サーバーには jpg.cgi sample.jpg GOTHIC.TTF ←windowsにあったファイルをそのままアップデートいたしました。 をアップしていますが、日本語が文字化けを起こしています。 フォントはゴシックになっているように思えます。 修正した箇所は #!/usr/bin/perl と # 合成したい文字列 my $text = "あいうえおABCアイウエオ123日本語"; と # 文字を記入する $image->Annotate(text=>$text, stroke=>'#FFFFFF', fill=>'#005599', font=>'GOTHIC.TTF', pointsize=>'36', x=>'20', y=>'40', encoding=>'UTF-8'); のGOTHIC.TTFだけになります。 何が悪いのかわからないので質問いたしました。

    • ベストアンサー
    • Perl
  • Image::Magickでサムネイル画の表示

    Image::Magickでサムネイル画の表示するCGIです ./image       属性は777 /$fmain_no.jpg    属性は644 サムネイル画を表示するとプロバイダーのサバーに保存されている画像も小さくなってしまいました、困っています、 サバーにある画像はそのままで画像を読んでサムネイル画を表示するようにしたいのですがよろしくお願いします。 use Image::Magick; $img_file = "./image/$fmain_no.jpg"; $height = 200; $i = Image::Magick->new; $i->Read($img_file); $i->[x]->Scale("x$height"); $i->Write("$img_file"); print "<IMG SRC=\"$img_file\" BORDER=0>\n";

  • Image::Magickの使い方を教えてくださいm(__)m

    CGIプログラミング第2版 P383のサンプル"commute_pie2.cgi"が動きません!! サンプルどおりのスクリプトを作成したのですが、フォーマットが不正というようなエラーになってしまいます。 エラー箇所を突き止めたので見てください。 エラー内容をお見せしたいため、次の簡易スクリプトを作成しました。 #!/usr/bin/perl use Image::Magick; my($mgk) = new Image::Magick(format => "png"); これを実行すると Exception 410: Invalid attribute (format) at /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi/Image/Magick.pm line 66. というエラーメッセージになります。 おそらくフォーマットとして"png"というリテラル値を指定しているが、このリテラル値が誤っているのではと予想しています。 どなたかImage::Magickの使い方を教えてください!! 環境はCD3枚組のRed Hat Linux 8をフルインストールしています。

    • ベストアンサー
    • Perl
  • perl Image::Magick

    恐れ入ります。perlでImage::Magickで画像の処理をしているのですが、画像によって途中までしか変換されていなかったりする画像(下部分が灰色)のものが出ます。この原因と対策をご存じの方はいらっしゃいますか? $filename = "./folder/image.jpg"; $filename 2= "./folder2/image.jpg"; $image = Image::Magick->new; $image->Read("$filename"); $width = $image->Get('width'); $height = $image->Get('height'); $image -> Set( quality => 60 ); $image->Write("$filename2"); 以上のようにしています。HTMLからファイルを受け取る部分は、 my ($query,$fileName); $query = new CGI; $fileName = $query->param('fileName'); open(OUT, ">./folder/image.jpg"); binmode(OUT); while(read($fileName, $buffer, 2048)) { print OUT $buffer; } としています。HTMLからのアップロードは、対象フォルダの画像を確認した場合問題無くアップされています。以上よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • PerlでImage::Magickを使いたい

    PerlでImage::Magickを使いたい ローカルサーバ上でImage::Magickを使いたいのですが、 設定がうまくいかないので質問です。 Win XP AN HTTPD 1.42p ActivePerl 5.10.1.1007 ImageMagick 6.5.9 Q8 ActivePerlは「C:\usr\local\」以下にインストールしました。 ImageMagickは 「ImageMagick-6.5.9-3-Q8-windows-dll.exe」をダウンロードし、インストールしました。 インストール時に「□Install PerlMagick for ActiveState Perl v5.10.1 build 1007」にチェックを入れました。 インストール場所は初期設定のまま、「C:\Program Files\ImageMagick-6.5.9-Q8」としました。 環境変数の設定が必要との説明を見かけたので、 「MAGICK_HOME」「MAGICK_PATH」を作り、値を「C:\Program Files\ImageMagick-6.5.9-Q8」としました。 set MAGICK_HOME で、 MAGICK_HOME=C:\Program Files\ImageMagick-7.5.9-Q8 と出るのを確認しました。MAGICK_PATHも同様です。 (説明しているサイトが複数あり、表記が違っていたので両方作ってみました) コマンドプロンプトで ppm list すると、 ウ Image-Magick ウ 6.5.9 ウ 9 ウ 863KB ウ site ウ と出てきます。 設定後再起動を行い、MT4のシステムチェックを行うと、 Image::Magick サーバーに Image::Magickか、Image::Magickの動作に必要な他のモジュールがインストールされていません。 アップロードした画像のサムネイルを作成する場合に必要となります。 Image::Magickのインストールはインストールマニュアルに沿って行ってください。 と出てしまいました。 以前perlで作成したcgiも動作しません。 ImageMagickのバージョンを微妙に変えてみるなども試しましたが、もうさっぱりです。 助けてください。お願いします:)

    • ベストアンサー
    • Perl
  • Jcodeモジュールの代わりにjcode.plで代用可能でしょうか?

    こんばんわ。前回質問したときに、 回答をしていただいた方、ありがとうございました。 原因は、結局のところ、サーバー会社の自分の使っているサーバーに ImageMagickがインストール?されていなかったみたいでした。 使えないのですが、(使用では使えることになっていた。) と、連絡したところ、無事使えるようになりました。 ありがとうございました。 ですが、実際、ImageMagickを使ってみて、 その機能の一部である、文字合成については英数字のみできました。 プログラムのuseにある、Jcodeが、働いていないみたいでした。 これはサーバーのサポート外なので、どうしようもないのですが。 そこで、思いついたのは、jcode.plを使って、なんとかならないかなー?と、思ったのですが、これはさすがに、無理でしょうか? 当然できたとしても難しいとは思うのですが、どうでしょう? 無理でしょうか? できるのでしょうか?できたとしても、かなり難しいのでしょうか? できるとしたら、どんな感じに組めばいいのか、参考になるアドバイスがいただけたらと、思っているのですが。 よろしくお願いします。 ↓は日本語が表示されなかった、プログラムです。 #!/usr/local/bin/perl -w use strict; use Jcode; use Image::Magick; # 画像を指定 my $file = "sample.jpg"; # 合成したい文字列 my $text = "ABC123日本語"; # UTF-8へ変換 $text = jcode($text)->utf8; # オブジェクト作成 my $image = Image::Magick->new; # 画像読み込み $image->Read($file); # 文字を記入する $image->Annotate(text=>$text, stroke=>'#FFFFFF', fill=>'#005599', font=>'sazanami-gothic.ttf', pointsize=>'36', x=>'20', y=>'40', encoding=>'UTF-8'); # 画像出力 print "Content-type: image/jpeg\n\n"; binmode STDOUT; $image->Write('jpeg:-'); undef $image; exit; よろしくお願いします。 ありがとうございました。 よろしくお願いします。

  • ActivePerlでImage::Magick使いたいんですけど助けてください。

    OSはWinXPです。 ちなみにActivePerl-5.10.1.1006-MSWin32-x86-291086.msi(確か)でImage::MagickはImageMagick-6.6.1-Q8です。 perlでためしに作ってみた文章をいじるプログラムを実行すると問題なくできるのですが、画像をいじるプログラムを作って実行すると”core_rl_magick.dllが見つからなかったためこのアプリケーションを実行できません”というエラーメッセージが出ます。ActivePerlとImageMagickをインストールしなおしても同じエラーがでます。 今までは画像をいじるプログラムを実行してもでなかったので対応に困ってます。 最近セキュリティをking softにした時にセキュリティに引っかかったファイルをろくに見ずに消去してしまったので、もしかしたらその中に入っていたのかもしれません。 perlを勉強し始めたばかりなので困っています。もし対処法を知っている方がおりましたら教えてください。 よろしくお願いします。

  • 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
  • アイネットディーというレンタルサーバーでImageMagickを使って

    アイネットディーというレンタルサーバーでImageMagickを使って画像にテキストを合成しようとしています。 アイネットディーのページを見るとImageMagickは使えると書かれています。 (Version: ImageMagick 6.3.6 01/09/08 Q16 ) 実際画像の合成などはうまくできるのですが、なぜかテキストだけ合成ができません。 エラーは出ずにテキストを合成してもらいたいところには、何の画像も合成されていません。 同じプログラム(当然パスは変えますが)を他のサーバーで試してみると テキストを合成することができます。 my $font = $path."ttf/azukiB.ttf"; my $image = Image::Magick->new; $image->Read($backimage); $text = jcode($line,"euc")->utf8; $image->Annotate(encoding=>'UTF-8',font=>$font,pointsize=>10, fill=>'red', text=>$text, x=>10, y=>100); 書体を変えたり指定方法をいろいろ変えたのですがうまくいきませんでした。 アイネットディーまたはImageMagick 6.3.6では他に何か設定するのでしょうか。 どうすればテキストを合成できるのでしょうか。

    • ベストアンサー
    • Perl
  • 【ImageMagick】5.42で画像向き変更

    PerlのImage::Magickで、画像の加工を行っています。 バージョンは下記です。 ========= Perl 5.6.1 Image::Magick 5.42 ========= iPhone画像の向きがおかしくなってしまうので、正しい画像の向きに変更したいのですが、 $img->AutoOrient(); を使えばいい事はわかりましたが、バージョンの違いによって、使用できませんでした。 都合上、上記のImage::Magickのバージョンは変更できません。 AutoOrient以外で記載したバージョンでも画像を正しい向きに変更する方法はありますでしょうか。

    • ベストアンサー
    • Perl

専門家に質問してみよう