使用 Intervention Image (PHP Package)修改图片大小

Intervention Image 是一个PHP图像处理和操作库,提供了一种更简单、更富表现力的方法来创建、编辑和组合图像。该包包括 ServiceProviders  和 Facades,便于Laravel集成。

这儿只是描述使用这个包来做一些最常用的图片截取调整大小的操作。

安装

composer require intervention/image

例子

// 引用自动加载类
require 'vendor/autoload.php';

// 引入 Intervention Image Manager 类
use Intervention\Image\ImageManager;

// create an image manager instance with favored driver
$manager = new ImageManager(array('driver' => 'imagick'));

// 实例化一个原始图片对象 to finally create image instances
$image = $manager->make('media/foo.jpg');

// 调整大小resize image instance
$image->resize(320, 240);

// 加水印 insert a watermark
$image->insert('public/watermark.png');

// 保存处理后的图片的本地磁盘 save image in desired format
$image->save('public/cache/foo.jpg');

// 返回缓存图片地址,用来显示

关于 调整大小

fit – 裁剪和调整大小相结合

// 打开图片资源 open file a image resource
$img = Image::make('public/foo.jpg');

// 裁剪最合适的5:3 (600x360)的比例和大小到600x360像素 crop the best fitting 5:3 (600x360) ratio and resize to 600x360 pixel
$img->fit(600, 360);

// 裁剪最合适的1:1比例(200x200),调整为200x200像素 crop the best fitting 1:1 ratio (200x200) and resize to 200x200 pixel
$img->fit(200);

// 添加回调函数以保留最大的原始图像大小 add callback functionality to retain maximal original image size
$img->fit(800, 600, function ($constraint) {
    $constraint->upsize();
});

resize – 调整大小

// create instance
$img = Image::make('public/foo.jpg')

// resize image to fixed size
$img->resize(300, 200);

// resize only the width of the image
$img->resize(300, null);

// resize only the height of the image
$img->resize(null, 200);

// resize the image to a width of 300 and constrain aspect ratio (auto height)
$img->resize(300, null, function ($constraint) {
    $constraint->aspectRatio();
});

// resize the image to a height of 200 and constrain aspect ratio (auto width)
$img->resize(null, 200, function ($constraint) {
    $constraint->aspectRatio();
});

// prevent possible upsizing
$img->resize(null, 400, function ($constraint) {
    $constraint->aspectRatio();
    $constraint->upsize();
});