■開発環境
Redhat9
HTMLフォームからテキストを入力し
PHPのスクリプトから シェルを実行し画像を生成(ImageMagick)しています。
英数字に関しては、問題なく生成されるのですが
日本語が化けてしまします。(添付画像)
スクリプト上で
EUCへ変換、UTF8へ変換
のエンコードを行っておりますが改善されませんでした。
サーバ上に日本語フォント(RPM)を入れて再度試してみたのですが うまくいかず
インストールが悪いのか、フォントしていのコマンドが悪いのか分からない状況になっています。
文字コードの問題かと思われます。
ためしにコマンドライン上で
$ convert -font /usr/share/fonts/japanese/TrueType/kochi-gothic-subst.ttf -pointsize 13 -fill blue -draw "text 20,30 'こんにちは'" old.png new.png
としたところ、日本語の表示には問題ありませんでした。
フォントを指定するときにフルパスで指定すると,うまくいくかもしれません.
以下は参考になりそうなURL.
http://www.rescue.ne.jp/CGI-BBS/image/magic/20031016172346.shtml
フルパスで指定しています。
OSはFedoraCore4です。
ImageMagickはRPMで導入しております。
Version: ImageMagick 6.2.2 05/24/06 Q16 file:/usr/share/ImageMagick-6.2.2/doc/index.html
Copyright: Copyright (C) 1999-2005 ImageMagick Studio LLC
Puttyからアクセスしていますが、文字セットは「UTF-8(CJK)」です。
<?php $font = "/usr/share/fonts/japanese/TrueType/kochi-gothic-subst.ttf"; $old = "old.png"; $new = "new.png"; $string = mb_convert_encoding("aiueoあいうえお", 'UTF-8', 'SJIS'); $command = "convert -font $font -pointsize 10 -fill red -draw \"text 20,30 '$string'\" $old $new"; exec($command, $out, $ret); ?> <html> <body> <p>command = <?=$command?></p> <pre><?php var_dump($out,$ret);?></pre> <hr> <img src="<?=$old?>"> => <img src="<?=$new?>"> </body> </html> </code>
を文字コードSJISで作成し、アップロード・実行したところ、以下のように無事表示されました。
command = convert -font /usr/share/fonts/japanese/TrueType/kochi-gothic-subst.ttf -pointsize 10 -fill red -draw "text 20,30 'aiueoあいうえお'" old.png new.png array(0) { } int(0)
[無地の画像] => [文字入りの画像]
OSを同じにしたらできました。何が原因なのかは結局わかりませんでした…
残念ながら文字化けしました。フォントを変えたり、エンコードを変えたりしましたがダメでした。参考までに使用OSや環境などを教えていただけますでしょうか。