2018年7月26日木曜日

PHP・larabel 写真撮影した画像をlaravelでリサイズして保存する方法

【1】カメラを起動して写真を撮影

カメラ起動の参考URL

<input type="file" accept="image/*">
とすることで
クリックしたときに
スマホのカメラを起動することができます


【2】 laravelで画像処理

intervention/image というパッケージを利用します。
以下のコマンドでインストールします。
$ composer require intervention/image
つづいて、intervention/imageのセットアップを行ないます。
編集ファイル:app/config/app.php

// 124行目に以下を追加
'InterventionImageImageServiceProvider',

// 192行目に以下を追加
'Image' => 'InterventionImageFacadesImage',
以上でセットアップが完了です。かんたんですね( ◜◡‾)

Laravelで画像処理をするさまざまな方法

まずは、Web上から画像をもってきて表示してみます。
以下の画像を利用してみます。
テスト用画像
以下のプログラムを実行すると画像が取得されていることがわかります。

Route::get('/', function(){

  $image = Image::make(file_get_contents('http://goo.gl/uDTEzv'));

  return $image->response('jpg');

});
つぎに画像をリサイズしてみます。
以下のプログラムを実行してみてください。

Route::get('/', function(){

  $image = Image::make(file_get_contents('http://goo.gl/uDTEzv'));

  $image->resize(100,100);

  return $image->response('jpg');

});
幅だけを設定して、高さは自動処理にしたい場合は以下のように記述します。

$image->resize(100, null, function ($constraint) {
  $constraint->aspectRatio();
});
クロップしたい場合は以下のように記述します。
$image->crop(100, 100);
デフォルトでは中心部からクロップされますが、クロップ位置を調整した場合は以下のように記述します。

// 左上からクロップする
$image->crop(100, 100, 0, 0);
白黒にした場合は以下のように記述します。
こりゃ便利ですね。
$image->greyscale();
もちろんチェーンメソッドも使えます。
以下が例となります。
$image->crop(200, 200)->greyscale();
その他のコマンドは公式マニュアルからご覧ください。

0 件のコメント:

コメントを投稿