むねひろ@プログラマープログラマーの技術や経験の暴露ブログです。何か聞きたいことがあれば遠慮なくご連絡ください。munehiroPHPで画像に文字を重ねるimagettftext()の使い方ツイートシェアはてブLINEPocket今回は画像に文字列を重ねる方法です。画像に画像を重ねるならイメージなんとなくイメージできますが、文字列を画像内に挿入??そんなこと出来るの?!って僕は最初思いました。結果を言うとimagettftext()という便利な関数がPHPに用意されているのでそれを使えば簡単にできます。サンプルコードを用意したのでそれで解説します。上でも説明しましたが、画像に文字を挿入して新しい画像を作成するにはimagettftext()を使います。サンプルコードの仕様blue.jpgというただ青いだけの画像を用意しました。この画像に文字を挿入します。追加する文字はなんでもいいですが、こんにちは!世界!という文字を白色で挿入しましょう。結果は次のようになります。簡単ですが、これを作成します。imagecreatefromjpeg()で読み込みます。次に挿入するテキストの情報を定義します。フォント($fontfile)は、今回はWindowsにインストールしたXAMPP環境だったので元々Windowsに入っていたメイリオというフォントを指定しました。拡張子は.ttcになります。サーバー上にフォントが無い場合はアップロードしてパスを指定しましょう。挿入する文字列の角度は、度で指定します。0度を指定すると、真横に描画されます。15と指定すると、開始位置から右上に15度傾きます。挿入位置のy軸にフォントサイズ($size)を追加している理由ですが、挿入するテキストの1文字目の左下が描画の基点になるようです。yを0にすると、ベース画像の上辺をベースラインとしてテキストが描画されるため画像内に描画されません。なんだか微妙な仕様ですが実験してみたらそうでした。そのため空けたい余白+文字サイズをすることで正常に空けたい余白を機能させれます。最初サンプルコードを作って動かしても文字が描画されなくて焦りました(笑)まったく迷惑な仕様ですね!!上で定義した情報をimagettftext()の引数にセットし、テキストを画像内に重ねるように挿入することができます。imagejpeg()を使い新規画像として出力します。まとめPHPで画像内に文字列を挿入する方法でした。ベース画像はimagecreatefromjpeg()で読み込む。挿入テキストは、挿入文字列、フォント、サイズ、カラー、角度を指定します。imagettftext()で挿入場所を指定し上で定義した情報でテキストを挿入します。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。PHPで画像に直線や四角、楕円の線を引く方法PHPで画像に別の画像を重ねる方法RECOMMENDこちらの記事も人気です。APIとの違いは?PHP2019.1.30別のPHPファイルを読み込む方法っていくつかあるけど違いは?PHP2018.10.3PHPのクラスの書き方と独自オブジェクトの使い方PHP2019.1.15PHPの配列の要素をコピーする方法って?PHP2018.12.23サーバーのPHPのバージョンを確認する方法PHP2019.2.17PHPで画像に別の画像を重ねる方法PHP2018.10.26PHPでDBに接続する方法をMySQLで解説PHP2019.1.13PHPの連想配列のキーと値をforeachでループしながら取得する方法むねひろ現在36歳。プログラマー歴16年。高校卒業後は調理師見習いをしていたけど、不況で先が不安になり離職。その後上京しハローワークの紹介でプログラマーに。分からないことだらけで辛い日々だったけど、3年頑張ったら色々見えてきてフリーランスに。面白そうなシステム開発をもっとしたい。