PHP で複数の画像とテキストを重ねて1つの画像を生成

PHP の画像処理関数を使って PNG 画像を生成できるので、ちょっとやってみた。既存の画像を重ねて一つの画像を作るというようなことができる。サイトで扱う画像にコピーライトのウォーターマークを入れたりと、応用が効く。

必要ファイルの準備

この penguin.png tag_sale.png software_package.jpg とテキストを重ねるのだけど、テキストを挿入するにはフォントファイル (.ttl) が必要になる。


https://ipafont.ipa.go.jp/node26 のようなところからフリーでフォントを落とせる。探せばWEB上に沢山転がっている。日本語の表示には日本語のフォントが必要。今回は ipaexg.ttf というフォントファイルを使う。

この4つのファイルに加えて、簡単なPHPクラスを書いたので、それを配置。

簡単なクラスを書いた

PngLayer.php

このクラスをどうやって使うかというと、インスタンス化して、addImage()addText() メソッドでレイヤーを追加して、最後に get() でアウトプットを取得。以下のような感じ。

画像

仕上がりはこんな感じ。

ショッピングサイトで商品画像に上からセール中のタグがついてたりするけど、同じようなことができる。

余談というかメモ

ちなみに、サポートしている画像形式は、png, gif, jpg, bmp の4種類。その判定に getimagesize() を使った。

getimagesize() が返す配列のストラクチャは以下のようになる。sample.gif,sample.bmp, sample.png, sample.jpg を同階層に配置して以下の コードを走らせる。インデックス 2 に整数でタイプ情報が格納されている。

Leave a Reply

Your email address will not be published. Required fields are marked *