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

このQ&Aのポイント
  • Image::Magickを使用して日本語の文字を画像にすると、文字化けが起こる問題が発生しています。
  • OKwebで調べた結果、文字化けの原因としてフォントの設定が関係している可能性があります。
  • 修正箇所はフォントの指定箇所で、使用するフォントをゴシックに設定することで解決できる可能性があります。
回答を見る
  • ベストアンサー

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
  • 回答数2
  • ありがとう数4

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

  • ベストアンサー
回答No.2

Windowsの標準フォントで日本語用のものはMS(P,UI)ゴシックとMS(P)明朝ですが、もしかしてこのソフトはTTFファイルしか扱えないのでしょうか。 そうするとMSゴシック/明朝はTTFではなくTTC形式なので使えないかもしれません。 中国・韓国語用フォントも含めて探すと、SimHei(simhei.ttf)がTTF形式です。一部の漢字の形が違ったりひらがなカタカナが非常に不格好だったりしますが、テスト用には十分でしょう。

hihin2003
質問者

お礼

SortaNerdさん 回答ありがとうございます!! simhei.ttfで表示させることが出来ました。 日本語のフォントがあるものを使用するのですね。 勉強になりました。ありがとうございます。

その他の回答 (1)

回答No.1

GOTHIC.TTFは「Century Gothic」というフォントのようですが、このフォントには日本語の文字は含まれていません。 しかしその画像のフォントはCenturyGothicではありませんので、ちょっと不可解です。 とりあえず日本語の使えるフォントで試してみるとよいと思います。なおWindowsに入っているフォントをそのまま使うのはライセンス上問題があると思います。

hihin2003
質問者

補足

SortaNerdさん回答ありがとうございます。 >GOTHIC.TTFは「Century Gothic」というフォントのようですが、このフォントには日本語の文字は含まれていません。 >しかしその画像のフォントはCenturyGothicではありませんので、ちょっと不可解です。 実は、そうなんです。違うフォントでした。すみません。 >とりあえず日本語の使えるフォントで試してみるとよいと思います。なおWindowsに入っているフォントをそのまま使うのはライセンス上問題があると思います。 日本語が使えるフォントはどれになるのでしょうか? windowsのものはとりあえず、使用して日本語が表示されるのかが知りたかったので利用いたしました。

関連するQ&A

  • 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()の記述が違うのではないかと思うのですが、 正しい書き方を教えて下さい。 どうすれば、文字を載せれるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • 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
  • 文字化け

    下記のようなcgiスクリプトがあり、test1.cgi から リンクの test2.cgiを呼ぶと 「リンドウ」が文字化けしてしまいます。 文字化けしないようにするには、どうしたらいいでしょうか。 Perl cgi 初心者です。 --------test1.cgi----------------------------------------- #!/usr/bin/perl print "Content-Type: text/html; charset=EUC-JP\n\n"; $name="リンドウ"; print "name=$name<br>"; print "<a href=\"test2.cgi?aaa,${name},bbb\">test2.cgi</a>\n"; ---------test2.cgi------------------------------------------------- #!/usr/bin/perl print "Content-type: text/html; charset=EUC_JP\n\n"; $query = $ENV{'QUERY_STRING'}; print "query=$query\n";

    • ベストアンサー
    • CGI
  • 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; よろしくお願いします。 ありがとうございました。 よろしくお願いします。

  • Safariで文字化けしてしまいます

    Intel Mac OS 10.4.8 safari 2.0.4 の環境です。 テキストエリアへの文字入力の際に 文字化けしてしまうのですが、対処法はありますでしょうか? そのページはEUC-JPで書かれており、 出力されている文字は普通に読めるのですが、 入力する文字だけ化けてしまいます。 該当ページにかかっている cssが問題かと思って調べてみたのですが、 font-family: 'MS PGothic', Osaka, 'MS Gothic', Gothic; と、Osaka も入っていました。

    • 締切済み
    • Mac
  • 文字化け

    フリーのスクリプトで、ポイント管理を行っているのですが、どうしても文字化けが起きてしまいます。 http://www.niko2.com/cgi/point/ こちらのサイトのスクリプトなのですが、csvもcgiも文字コードはeucにしており、ローカルでcsvを編集し、アップすると綺麗に表示されます。 しかし、サイト上で一部分でも編集しようものならいきなり文字化けがおきてしまいます。 どうにか回避する方法はないものでしょうか?

    • 締切済み
    • CGI
  • Ajaxで文字化けしてしまいます

    IE6を使用しています。 UTF-8のBOMありで以下のコードを保存しています。 sample.txtに入っている「あああ」を出力すると 文字化けしてしまいます。 <script src="prototype.js" type="text/javascript"></script> を <script src="prototype.js" type="text/javascript" charset="utf-8"></script> で試しても同じ結果でした。 何が原因なのでしょうか? <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <title>prototype.jsサンプル</title> <script src="prototype.js" type="text/javascript"></script> <script type="text/javascript"><!-- function readText() { var sURL = "sample.txt?cache="+(new Date()).getTime(); new Ajax.Updater("result",sURL, { method: "get" }); } // --></script> </head> <body> <h1>prototype.jsサンプル</h1> <form method="get" name="ajaxForm" onsubmit="readText();return false;"> <input type="submit" value="sample.txtを読み込み"><br> </form> <div id="result"></div> </body> </html>

  • アイネットディーというレンタルサーバーで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
  • 文字化け

    サイトにカレンダーを設置しようとしたんですが、 2005年4月 日 月 火 水 木 金 土 と表示されるはずなのに、 2005年4・/b> 楠:/font> ・/font> 於:/font> 水 万:/font> 金:/font> 土 こんな感じで文字化けしてしまいます。 いくつか他のcgiのカレンダーをダウンロードして試してみたんですが、どれもやっぱり日付のところが上のようになってしまいます。cgiというよりどこか他のところに問題があるのかなとも思うんですが、どうすればいいでしょうか。 cgi以外の部分は特に文字化けはありません。他にフォームメールのcgiも使ってみましたが、こちらも問題なく使えました。よろしくお願いします。

    • ベストアンサー
    • CGI
  • Image::Magickの呼び出し

    前の質問が未解決なのですが、同時に進めていたこちらも行き詰ってしまったので恐縮ながら質問です。 Image::Magickを使用したく、以下のサイトを参考にインストールを試みました。 http://www.ss.iij4u.or.jp/~somali/web/_imagemagick.html (当方の環境は、Win XP Home/Apache 2.0をローカルサーバとし、ActivePerl 5.8.7を使用しています。) しかしページどおりに作業をしても、CGIでuse Image::Magickを書いたラインがエラーを返してきます。Can't locate Image/Magick.pm in @INC (@INC contains: C:/usr/local/lib C:/usr/local/site/lib .) at 【CGIファイルの場所】 と返されていました。 解決のために以下のことを確認・実行しました。 (1)(インストーラではチェックを入れたのに)PerlMagickがPerlのsite/libにインストールされておらず、C直下のImageMagickフォルダのなかにありました。(アンインストールの上再インストールをしても同様) よってPerlMagickフォルダ内のReadMeに倣い、PPMからImageMagick.ppdを実行、インストールしました。PPMからquery *を実行すると、ちゃんとインストールされているのが確認できました。 (2)Magick.pmの入っているImageフォルダをC:\Perl\binフォルダの中にコピーし、サーバを再起動。(C:\Perl\binにパスが通っていることは、コマンドラインからPATHを実行して確認済。) それでもやはり動きません…。PCを再起動しても同様です。同じエラーが返ってきます。 モジュールを使うのは初めてで、CPANなどよくわからない部分も多いのですが、もうこれ以上何をしたらいいのかわかりません…。 何か解決策をご存知の方いらっしゃいましたらよろしくご教授下さい。

    • 締切済み
    • CGI

専門家に質問してみよう