お世話になります。
imagemagickを使って文字列から画像を生成しております。改行文字がある文字列を画像にしてみたのですが、画像生成後には中央揃えになってしまってこれらのインデントをコントロールするやり方がわからず質問した次第です。
画像生成前
![![イメージ説明]WIDTH:220]WIDTH:220
![イメージ説明]WIDTH:228
コード自体はものすごくシンプルに書いていて、自分としてはこのような書き方ではデフォルトは左揃えになるんだろうという予想をしていたのですが、中央揃えになってしまっている感じでうす。
lang
$canvas = new Imagick(); $text = new ImagickDraw(); $text->setFont($textFontsFamilies[$num]); $text->setFontSize($mtt_fontsize); $text->setGravity(Imagick::GRAVITY_CENTER); $text->setFillColor($textFontsColors[$num]); $text->annotation(0, 0, $value['text']); $metrics = array(); $metrics = $canvas->queryFontMetrics($text, $value['text']); $canvas->newImage($metrics['textWidth'], $metrics['textHeight'], 'none'); $canvas->drawImage($text); $canvas->setImageFormat('png'); $canvas->writeImage('out.png');
当てずっぽうでGRAVITY_CENTER→GRAVITY_LEFTなんてやってみたりしましたが、なかなかうまくいかないです。
こちら詳しい方どなたかご教授いただけると助かります。またいろいろ調べているのですが、これらのことについて詳しく書かれているサイトが全然見つかりません。何かしらよい参考サイト様などありましたらアドバイスください。
よろしくお願いいたします。
追伸
imagemagickのコマンドを直接叩くとうまくいっております。
lang
convert -size 640x854 -background "#C0C0C0" -fill "#FFFF00" -font font.ttf caption:"サンプル\n改行も\nできます" out.png
しかしこれをphp上のexec()やshell_exec()で実行すると日本語の場合すべて文字が「?」になってしまいます。いろいろな文字のエスケープの仕方が悪いのかもしれないですが、こちらも難航しております。
まだ回答がついていません
会員登録して回答してみよう