案件にて、S3に格納されている「png」や「jpg」画像をwebp画像に変換するタスクがありました。
君にそんな能力あったんかい!?
「Intervention Image」です。バックエンドで画像処理(S3への格納など)をされてるプロジェクトではかなりメジャーなモジュールだと思われます。
このパッケージは、Laravel フレームワークと開発者向けの優れたエクスペリエンスを提供するように設計されており、GD または Imagick の内部的な動作に依存することなく、アプリケーションが必要とするすべての機能を提供します。
インストールと基本的な使い方
インストール
Composerを通じてインストール。
composer require intervention/image
画像の読み込み
$image = Image::make('app/public');
$image = Image::make('http://example.com/image.jpg');
use Image;
class CheckController extends Controller
{
public function index(Request $request)
{
$img = Image::make($request->file('image'));
}
}
基本的なメソッド一覧
$img = Image::make('public/sample.jpg');
//URLからも画像ファイル化は可能です。
$path = storage_path('app/sample.jpg');
$img->save($path);
//引数で画質指定できる(0~100)
$img->save($path,100);
//デフォルトでは30
*ここでの保存はLaravelのstrage/app配下に保存してます
// 比率無視
$img->resize(100, 100);
$img->resize(100, null);
$img->resize(null, 100);
// 比率維持 幅は指定、高さは自動
$img->resize(100, null, function($constraint){
// 比率を維持
$constraint->aspectRatio();
});
少しオモローなメソッド
//引数の数値はモザイクの大きさを表す
$img->pixelate(10)
//引数は回転する度数を表す
$img->rotate(-45);
//背景色を与えることも可能
$img->rotate(-45, '#f44336');
//0~100で明るさの指定
// 暗い
$img->blur(0);
// 明るい
$img->blur(100);
//(red,green,blue)の順で1~100の引数を与える
$img->colorize(30,50,90);
//-100~100で度合いを与える
$img->contrast(-50);
//jpg、png、gif、tif、bmp、ico、psd、webp、data-urlに対応
$ipg_img = $img->encode('jpg');
取得系
$value = $img->width();
$value = $img->height();
$value = $img->filesize();
$value = $img->mime();
最後に
上記は一部なので、公式サイトで是非他のメソットも見てみてください。
(正直コントラストかけたりすることあるんか?とも思いますが)便利な子ですね。
現案件では、S3への保存前にサムネイルを作成するためにリサイズの処理を行なっています。このように画像サイズが規格外の場合や、拡張子の変換、または非公開用のモザイク処理など保存前の調整として重宝できそうです。そして何と言っても使いやすすぎる。機会があれば是非利用してみてください!!
それでは!!