勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

フォームからアップロードした画像にPHPで任意のテキストを追加する方法

  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;
}

各種オプションについて

テキスト関連の各種オプションについてはこちらのページを参照。

 - PHP

  関連記事

PHPからWebAPI(screendot)経由で他サイトのスクリーンショットを取得する方法

PHPで他サイトのスクリーンショットを取得したい。今回はライブラリは無しで実現し ...

PHPで縦横どちらかが指定の長さを超えた場合、比率を保ったままリサイズ

PHPで縦横どちらかが指定の長さを超えた場合、 比率を保ったままリサイズしたかっ ...

formのinput="file"でディレクトリを選択させ、ディレクトリ内のファイルを全てアップロードする方法

フォームで複数のファイルをアップロードしたい場合、input="file"を複数 ...

smart_resize_imageで縦横の比率関係なく、固定リサイズ

PHPで縦横どちらかが指定の長さを超えた場合、比率を保ったままリサイズで使ったs ...

ファイルの更新日付取得とリネーム

やりたかった事は、画像ファイルの更新日時取得と リネーム。 ■参考サイト htt ...