LaravelでGDを使って画像ファイル処理したいメモ(画像ファイルのfakerのイメージ)

概要

  • Laravelで画像ファイルを作成したい(テストなど)
  • PNG,JPEG,WebPなど作成したい
  • Dockerで使いたい

PHPの定番ライブラリGD

GDという定番ライブラリがあるようなのでそれを使用する

www.php.net

DockerファイルでのGDインストール

参考

tt-computing.com

www.php.net

結論

PNG, JPEG, WebPであれば、以下をDockerでビルドすればOK

RUN apt-get update && \
  apt-get install -y zlib1g-dev libpng-dev libjpeg62-turbo-dev libwebp-dev && \
  docker-php-ext-configure gd --with-jpeg --with-webp && \
  docker-php-ext-install -j$(nproc) gd

確認方法

上記Dockerfileをビルドし、PHP用コンテナに入り、tinker起動

php artisan tinker

tinkerでgd_info();を実行

gd_info();

=> [
     "GD Version" => "bundled (2.1.0 compatible)",
     "FreeType Support" => false,
     "GIF Read Support" => true,
     "GIF Create Support" => true,
     "JPEG Support" => true,
     "PNG Support" => true,
     "WBMP Support" => true,
     "XPM Support" => false,
     "XBM Support" => true,
     "WebP Support" => true,
     "BMP Support" => true,
     "AVIF Support" => false,
     "TGA Read Support" => true,
     "JIS-mapped Japanese Font Support" => false,
   ]

うまくいってそう。 ちなみに、Laravelで使う場合、たとえば以下のようなことができる。

use Illuminate\Http\UploadedFile;

UploadedFile::fake()->image('aaa.jpg');

これによってファイル作成してくれる模様(メモリ上で作成するだけ?)

テストコード

テストコードもこれを使って記載したい(実際のテストコードは別の内容で)

参考

tenrakatsuno.com