ImageTTFTextで日本語以外は文字化け

環境

Centos 8

PHP 7.4

GD 2.3.0

FreeType 2.10.2

テスト

ImageTTFText($img_base, 100, 0, 16, 134, ImageColorAllocate($img_base, 0xff, 0xff, 0xff), ‘../data/YUMIN.ttf’,”あ”);

→ “Warning: imagettftext(): any2eucjp(): invalid code in input string” エラー

ImageTTFText($img_base, 100, 0, 16, 134, ImageColorAllocate($img_base, 0xff, 0xff, 0xff), ‘../data/YUMIN.ttf’,mb_convert_encoding(“あ”, “euc-jp”, “utf-8”));

→ 画像に正しく日本語が表示される

ImageTTFText($img_base, 100, 0, 20, 130, ImageColorAllocate($img_base, 0x11, 0x11, 0x11), ‘../data/nBatang.TTF’,mb_convert_encoding(“대한민국”, “euc-jp”, “utf-8”));

→韓国語を、韓国語フォントで表示しようとしたが、画像に文字化けて表示される

ImageTTFText($img_base, 100, 0, 20, 130, ImageColorAllocate($img_base, 0x11, 0x11, 0x11), ‘../data/nBatang.TTF’,mb_convert_encoding(“대한민국”, “euc-kr”, “utf-8”));

→euc-krにしたが、やはり文字化ける

あきらめて

yum install ImageMagick

でimagemagickをインストールして、

convert -font ../data/nBatang.TTF -pointsize 30 -annotate +20+30 “대한 국” original.jpg result.jpg

で、うまく表示された。

system()やexec()から呼び出して回避することにした。

結論

GDのFreeTypeで日本語とアルファベット以外は文字化ける。

imagemagickが回避策。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする