この記事では、LaravelにおけるIntervention/image画像処理拡張パッケージのインストールと使い方、使用中に遭遇する可能性のある落とし穴の解決方法を中心に、サンプルコードを交えて詳しく紹介しています。あなたの勉強や仕事に重要な学習価値を必要とする友人は、編集者をフォローして一緒に学習してください。お役に立てれば幸いです。
はじめに
Intervention/image は、Laravel 用にカスタマイズされた画像処理ツールで、画像の作成と編集を簡単に表現できます。
デモ
デモのスクリーンショット
デモの実行
Homesteadを使用してLaravelプロジェクトを素早く実行する方法のドキュメントを参照してください。
記事の概要
1) を使用してインストールします:
composer require intervention/image上記のコマンドは、app/config/app.php を変更して ServiceProvider:
// 将下面代码添加到 providers 数组中
'providers' => [
// ...
Intervention\Image\ImageServiceProvider::class,
// ...
],
// 将下面代码添加到 aliases 数组中
'aliases' => [
// ...
'Image' => Intervention\Image\Facades\Image::class,
// ...
],
2 を追加します。画像処理ライブラリ
この拡張パッケージはデフォルトで画像処理にPHPのGDライブラリを使用していますが、GDライブラリの画像処理効率はimagemagickライブラリに比べて若干劣るため、画像処理ライブラリimagemagickライブラリに置き換えることを推奨します
始める前に、まず GD または Imagick がローカルにインストールされていることを確認する必要があります。
Intervention Image を使用する場合は、配列パラメーターを ImageManager に渡すだけで、GD と Imagick ライブラリ間の相互切り替えが完了します。 以下に示すように:
// 引入 composer autoload require 'vendor/autoload.php'; // 导入 Intervention Image Manager Class use Intervention\Image\ImageManager; // 通过指定 driver 来创建一个 image manager 实例 $manager = new ImageManager(array('driver' => 'imagick')); // 最后创建 image 实例 $image = $manager->make('public/foo.jpg')->resize(300, 200);
さらに、以下に示すように、ImageManager の静的バージョンを使用することもできます:// 引入 composer autoload
require 'vendor/autoload.php';
// 导入 Intervention Image Manager Class
use Intervention\Image\ImageManagerStatic as Image;
// 通过指定 driver 来创建一个 image manager 实例 (默认使用 gd)
Image::configure(array('driver' => 'imagick'));
// 最后创建 image 实例
$image = Image::make('public/foo.jpg')->resize(300, 200);
config/image.php 構成ファイルを生成します:php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravel5"
上記のコマンドを実行した後、構成/image.php 設定ファイルがプロジェクト内に生成されます。このファイルを開き、ドライバーを imagick:
return array( 'driver' => 'imagick' );に変更します。この時点で、この拡張パックは正常にインストールされています! 3. 基本的な使用方法
// 修改指定图片的大小 $img = Image::make('images/avatar.jpg')->resize(200, 200); // 插入水印, 水印位置在原图片的右下角, 距离下边距 10 像素, 距离右边距 15 像素 $img->insert('images/watermark.png', 'bottom-right', 15, 10); // 将处理后的图片重新保存到其他路径 $img->save('images/new_avatar.jpg'); /* 上面的逻辑可以通过链式表达式搞定 */ $img = Image::make('images/avatar.jpg')->resize(200, 200)->insert('images/new_avatar.jpg', 'bottom-right', 15, 10);4. 機能
基本的な使用法に加えて、この拡張パックは次の機能もサポートしています。
画像のキャッシュ機能。機能: 統一されたルールに従って画像を変換します。
画像の動的処理: アクセスされた画像の URL パラメーターに従って画像サイズを自動的に調整しますその他の例については、公式ドキュメントを参照してください。
// 记录开始时间 $startTimestamp = microtime(true); $url = 'http://wx.qlogo.cn/mmopen/XxT9TiaJ1ibf06TNRCMjQADS4opDHvQLguLZHpqkRlvuJYZicvJW4iaOalPsKIs0kpZ3F6864ZzibyObYiaucUQSrdp4pFTNDyIpxw/0'; $avatar = \Image::make($url); // 记录结束时间 $endTimestamp = microtime(true); info($startTimestamp); info($endTimestamp); info($endTimestamp - $startTimestamp);
$startTimestamp = microtime(true); $client = new \GuzzleHttp\Client(); $url = 'http://wx.qlogo.cn/mmopen/XxT9TiaJ1ibf06TNRCMjQADS4opDHvQLguLZHpqkRlvuJYZicvJW4iaOalPsKIs0kpZ3F6864ZzibyObYiaucUQSrdp4pFTNDyIpxw/0'; $avatarResponse = $client->get($url); $avatar = \Image::make($avatarResponse->getBody()->getContents()); $endTimestamp = microtime(true); info($startTimestamp); info($endTimestamp); info($endTimestamp - $startTimestamp);ここでは、最初に GuzzleHttp を使用してアバターを取得し、次に Image::make($data) を使用してアバターを作成します。 注意、もうすぐクライマックスです…サングラス以下のログのスクリーンショットを見てください。3 回にかかった平均時間は約 0.07 秒で、前の 16 秒よりも 200 倍以上悪いです。
なぜこの現象が起こるのかはまだわかりませんが、これは間違いなく便利でニッチな体験です。
関連する推奨事項:
Laravelでルーティングパラメータを取得する方法の詳細な説明
以上がLaravel画像処理拡張パッケージの詳細説明 介入・イメージの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。