PHPで画像アップロード、リサイズ、形式変換(jpg->webp等)はclass.upload.phpが便利
2024/03/30
今までPHPで画像関連の処理を行う場合、リサイズの時のみsmart_resize_imageを使うことがあったものの、その他処理はバニラ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ページよりファイルをダウンロードし、適当なディレクトリにアップロードする。
今回はこちらの方法を取った。
ソースコード
フォーム側(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; //アスペクト比はそのままで横幅を300pxにリサイズ $handle->image_resize = true; $handle->image_x = 300; $handle->image_ratio = true; $handle->image_convert = 'webp'; //アップロードするディレクトリ指定 $handle->process('./file/'); if( $handle->processed ){ //成功処理 echo 'success'; }else{ //エラー処理 echo $handle->error; } }else{ //エラー処理 echo $handle->error; }
ファイルの拡張子をチェックしたい場合
以下で拡張子を取得できるので適当にif文とかでチェックすること。
$handle->image_src_type
Destination directory can't be made writeable. Can't carry on a process.エラーが出る場合
ファイルアップロード用ディレクトリのパーミッションを777もしくは775あたりに変更すること。
所感
簡潔に書ける上にcomposer無しでも簡単に導入できるので今後使っていきたい。
ただ日本語版リファレンスが無いのが辛いところ。
関連記事
-
PHPでjpg / png画像をAVIF形式の画像に変換する方法
PHPでjpg / png画像をAVIF形式の画像に変換しサーバに保存したい。W ...
-
PHPで「php-qrcode-detector-decoder」ライブラリを使用してQRコードをデコードする方法
PHPでQRコードの画像をデコードし、値を変数等に格納したい。何とかならないか調 ...
-
PHPでデータベースを取り扱いやすくなるORMライブラリ「idiorm」の利用方法
Codeigniterでデータベースを取り扱う際にクエリビルダクラスを用いて可読 ...
-
phpdotenvライブラリを使用してPHPで.envファイルを読み込ませる方法
CodeIgniterを勉強していた際に各種設定は「.env」というファイルに記 ...
-
PHPでvar_dumpをツールバー形式で表示するライブラリ「Kint」の使い方
PHPでvar_dumpを見やすくするためにdBugライブラリを利用しているが、 ...