


Detailed explanation of Laravel image processing extension package Intervention/image
This article mainly introduces to you the installation and use of the Intervention/image image processing extension package in Laravel and the solutions to the pitfalls that may be encountered in use. The article introduces it in great detail through sample code, which is very useful for your study or work. It has certain reference and learning value. Friends who need it can follow the editor to learn together. I hope to be helpful.
Preface
Intervention/image is an image processing tool customized for Laravel. It provides a set of easy-to-express methods. Create and edit images.
Demo
Demo screenshot
Demo Run
Please refer to the document how to use Homestead to quickly run a Laravel project.
Article Overview
Installation;
Modify configuration information;
Basic usage ;
- ##Special features.
The following is a detailed explanation.
##1. Install
composer require intervention/image
The above command will
2). Modify app/config/app.php and add ServiceProvider:
// 将下面代码添加到 providers 数组中
'providers' => [
// ...
Intervention\Image\ImageServiceProvider::class,
// ...
],
// 将下面代码添加到 aliases 数组中
'aliases' => [
// ...
'Image' => Intervention\Image\Facades\Image::class,
// ...
],
2. Image processing library configuration
This extension package uses PHP's GD library for image processing by default, but since the GD library's image processing efficiency is slightly inferior to the imagemagick library, it is recommended to replace it with the imagemagick library for image processing.
Before you start, you must first make sure that GD or Imagick has been installed locally.
When using Intervention Image, you only need to pass an array parameter to ImageManager to complete the communication between GD and Imagick libraries. Switch between each other.
As shown below:
// 引入 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);
Alternatively, you can also use the static version of ImageManager, as shown below:
// 引入 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);
Generate the config/image.php configuration file:
php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravel5"
After running the above command, the config/image.php configuration file will be generated in the project. Open this file and modify the driver to imagick:
return array( 'driver' => 'imagick' );
This is it, this expansion package is Installation successful!
3. Basic usage// 修改指定图片的大小
$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. Featured functions
In addition to the basic usage introduced above, this expansion pack also supports:
- Image upload function;
- Image caching function;
- Image filtering function: Convert images according to unified rules;
- Dynamic image processing: According to the URL of accessed images Parameters automatically adjust image size
- For more examples, please refer to the official documentation.
A small pit in intervention/image and its How to crack itIn fact, intervention/iamge has been used for a long time. Its API is very concisely designed, the documentation is also very comprehensive, and it is quite easy to use.
But recently I accidentally discovered a small pit. Because I need to synthesize a QR code with a WeChat avatar, I use Image::make($avatarUrl) ($avatarUrl here is the link to the WeChat avatar) to generate the avatar, and then synthesize it into the QR code image (including some other operations, such as using template backgrounds and writing text).
After I finished writing, I found that it was quite slow when I ran it, taking about 23 seconds on average. At first I thought it was because there were many operations and the size was relatively large during the synthesis process, so it should have been this speed. But then I got some free time and started trying to optimize. Even if I couldn't improve the speed, I could at least figure out why it was so time-consuming.
After much fiddling around, I discovered that the truth has little to do with the number and size of synthesis operations. The key lies in the pose in which I create the avatar data.
In order to illustrate this problem, the following code was specially written for comparison.
// 记录开始时间 $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);
The above code uses the form of Image::make($url) to generate an avatar directly from the url. Judging from the recorded log data, the time taken is basically around 16 seconds.
Later, I thought of a new posture. In fact, I came up with it while trying to optimize. See the code below:
$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);
Here I first use GuzzleHttp to get the avatar, and then use Image::make($data) to create the avatar.
Attention, it’s about to climax... sunglasses
Look at the screenshot of the log below. The average time taken three times is about 0.07 seconds, which is more than 200 times worse than the previous 16 seconds.
As for why this phenomenon occurs, I don’t know yet, but this is undoubtedly a useful and niche experience.
Related recommendations:
Detailed explanation of Laravel’s localization module
Detailed explanation of how to obtain routing parameters in Laravel
Detailed explanation of the loading process and principle of Facade in Laravel
The above is the detailed content of Detailed explanation of Laravel image processing extension package Intervention/image. For more information, please follow other related articles on the PHP Chinese website!

PHP remains important in modern web development, especially in content management and e-commerce platforms. 1) PHP has a rich ecosystem and strong framework support, such as Laravel and Symfony. 2) Performance optimization can be achieved through OPcache and Nginx. 3) PHP8.0 introduces JIT compiler to improve performance. 4) Cloud-native applications are deployed through Docker and Kubernetes to improve flexibility and scalability.

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

PHP and Python each have their own advantages and are suitable for different scenarios. 1.PHP is suitable for web development and provides built-in web servers and rich function libraries. 2. Python is suitable for data science and machine learning, with concise syntax and a powerful standard library. When choosing, it should be decided based on project requirements.

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

The reasons why PHP is the preferred technology stack for many websites include its ease of use, strong community support, and widespread use. 1) Easy to learn and use, suitable for beginners. 2) Have a huge developer community and rich resources. 3) Widely used in WordPress, Drupal and other platforms. 4) Integrate tightly with web servers to simplify development deployment.

PHP remains a powerful and widely used tool in modern programming, especially in the field of web development. 1) PHP is easy to use and seamlessly integrated with databases, and is the first choice for many developers. 2) It supports dynamic content generation and object-oriented programming, suitable for quickly creating and maintaining websites. 3) PHP's performance can be improved by caching and optimizing database queries, and its extensive community and rich ecosystem make it still important in today's technology stack.

In PHP, weak references are implemented through the WeakReference class and will not prevent the garbage collector from reclaiming objects. Weak references are suitable for scenarios such as caching systems and event listeners. It should be noted that it cannot guarantee the survival of objects and that garbage collection may be delayed.

The \_\_invoke method allows objects to be called like functions. 1. Define the \_\_invoke method so that the object can be called. 2. When using the $obj(...) syntax, PHP will execute the \_\_invoke method. 3. Suitable for scenarios such as logging and calculator, improving code flexibility and readability.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

SublimeText3 English version
Recommended: Win version, supports code prompts!

Notepad++7.3.1
Easy-to-use and free code editor

Atom editor mac version download
The most popular open source editor