フォームからアップロードした画像にPHPで任意のテキストを追加する方法
以前フォームから送られてきた画像に対してサイトロゴみたいなロゴ画像を追加する記事を書いたが、今回はロゴではなく任意のテキスト(文言)を指定の位置に追加したい。これも「class.upload.php」ライブラリを用いることで簡単に実装できた。以下に対応方法をメモ。
目次
class.upload.php
公式サイト
https://www.verot.net/php_class_upload.htm
GitHub
https://github.com/verot/class.upload.php
ドキュメント
https://github.com/verot/class.upload.php/blob/master/README.md
インストール方法
composerを使う場合
composer require verot/class.upload.php
自サーバにアップロードする場合
公式サイトのclass.upload.phpページよりファイルをダウンロードし、適当なディレクトリにアップロードする。
今回はこちらの方法を取った。
事前準備
フォントファイルの準備
適当なフォントファイル(ttfファイル)をサーバにアップロードしておく。今回はこちらのサイトの「GenShinGothic-Light.ttf」を使用させていただいた。
尚、フォントファイルを用意しない場合(デフォルトのフォントを使った場合)、日本語のテキストが文字化けした。
ソースコード
フォーム側(index.php)
<html lang="ja"> <head> <meta charset="utf-8"> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" name="submit" value="送信"> </form> </body> </html>
アップロード側(upload.php)
<?php require_once 'class.upload.php'; $file = $_FILES['file']; $lang = 'ja_JP'; $handle = new \Verot\Upload\Upload($file, $lang); if( $handle->uploaded ){ //ファイル名の変更 $handle->file_new_name_body = date('YmdHis'); //同一ファイル名の場合は上書き $handle->file_overwrite = true; //フォント設定 $handle->image_text_font = './GenShinGothic-Light.ttf'; //テキスト内容 $handle->image_text = "テストテキスト\n改行\nテストテキスト"; //テキストサイズ $handle->image_text_size = 24; //X軸の位置 $handle->image_text_x = -5; //Y軸の位置 $handle->image_text_y = -5; $handle->Process('./img/'); if( $handle->processed ){ //成功処理 echo 'success'; }else{ //エラー処理 echo $handle->error; } }else{ //エラー処理 echo $handle->error; }
各種オプションについて
テキスト関連の各種オプションについてはこちらのページを参照。
関連記事
-
-
CodeIgniter4でフォームからファイルをアップロードし保存する方法
CodeIgniter4.4.4でformから画像等のファイルをアップロードし、 ...
-
-
PHPでjpg / png画像をWebP画像に変換し保存する方法
PHPでjpg / png画像を圧縮したかった。ただjpg / pngのままだと ...
-
-
smart_resize_imageで縦横の比率関係なく、固定リサイズ
PHPで縦横どちらかが指定の長さを超えた場合、比率を保ったままリサイズで使ったs ...
-
-
PHPにてSVGファイルをjpg / png画像に変換する方法
PHPにてSVGファイルをjpgもしくはpng形式の画像ファイルに変換したいとい ...
-
-
PHPで画像アップロード、リサイズ、形式変換(jpg->webp等)はclass.upload.phpが便利
今までPHPで画像関連の処理を行う場合、リサイズの時のみsmart_resize ...