Intervention Image 是一个开源的 PHP 图像处理和操作 库。它提供了一个更简单也更优雅的方式来创建/编辑/组合图像,并且支持最常见的两个图像处理库 GD Library 和 Imagick 。
它的让PHP处理图片的代码,变得更简单,并且更有可读性,更容易理解.无论是我们希望创建图像缩略图,增加水印,给大图片转码压缩,他都可以让我们的代码更少,更具有可读性.
简单的代码
例如:
只要四行代码,我们就实现了对图片的缩放和增加水印.
// 打开图片
$img = Image::make('public/foo.jpg');
// 对图片缩放
$img->resize(320, 240);
// 增加水印
$img->insert('public/watermark.png');
// 保存图片
$img->save('public/bar.jpg');
由于它支持链式操作,所以我们可以将四行代码写成一行:
$img = Image::make('public/foo.jpg')->resize(320, 240)->insert('public/watermark.png');
对于超大图片,比如超过8000像素的图片,GD库可能执行不了,这时只要配置一下,使用imagick库即可,代码不需要任何改动.
Image::configure(['driver' => 'imagick']);
多种文件类型和打开方式
根据扩展的不同,支持的扩展格式如下:
JPEG | PNG | GIF | TIF | BMP | ICO | PSD | WebP | |
---|---|---|---|---|---|---|---|---|
GD | ✔️ | ✔️ | ✔️ | - | ✔️ ** | - | - | ✔️ * |
Imagick | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ * |
并且支持多种图片资源的打开方式:
- string - 文件路径.
-
string - 文件URL链接(需要开启
allow_url_fopen
). - string - 图片的二进制数据.
- string - 图片的Data-URL数据.
- string - 图片文件的Base64数据.
- resource - GD资源实例. (使用GD)
- object - Imagick资源实例 (使用Imagick)
-
object -
Intervention\Image\Image
资源实例 - object - SplFileInfo 资源实例 (包括 laravel的上传文件对象或ThinkPHP的上传文件对象
方便的设置颜色
更让小编心动的是,当我们需要设置颜色时,他支持多种设置方式,非常方便:
// 用数组的方式
$img->fill([255, 0, 0]);
// 用数组的方式,设置透明度
$img->fill([255, 255, 255, 0.5]);
// 简写十六进制
$img->fill('#ccc');
// 标准十六进制
$img->fill('#cccccc');
// 不要前缀的十六进制
$img->fill('cccccc');
// rgba写法
$img->fill('rgb(255, 0, 0)');
// 使用透明度的rgb写法
$img->fill('rgba(0, 0, 0, 0.5)');
URL动态参数处理
最终效果像这样:
http://yourhost.com/{route-name}/original/{file-name}
通过传入不同的`route-name`,实现对图片的处理读取:
- small - 120x90 Pixel
- medium - 240x180 Pixel
- large - 480x360 Pixel
并且支持直接下载或在线预览的参数:
- original - 直接在浏览器显示.
- download - 下载到本地.
目前这个特性只对laravel提供了官方代码,但是这种功能实现起来是很简单的,其实就是实现了一个过滤器,他默认提供了三种过滤器而已,我们也可以定义自己的过滤器.
只要两行即可.
// 打开图片
$img = Image::make('foo.jpg');
// 使用过滤器
$img->filter(new DemoFilter(45));
更多用法
它提供了非常全面的接口用法,剩下的你可以自己去探索啦.
- backup()
- basePath()
- blur()
- brightness()
- cache()
- canvas()
- circle()
- colorize()
- contrast()
- crop()
- destroy()
- ellipse()
- encode()
- exif()
- filesize()
- fill()
- filter()
- fit()
- flip()
- gamma()
- getCore()
- greyscale()
- height()
- heighten()
- insert()
- interlace()
- invert()
- iptc()
- limitColors()
- line()
- make()
- mask()
- mime()
- opacity()
- orientate()
- pickColor()
- pixel()
- pixelate()
- polygon()
- psrResponse()
- rectangle()
- reset()
- resize()
- resizeCanvas()
- response()
- rotate()
- save()
- sharpen()
- stream()
- text()
- trim()
- widen()
- width()
好的工具真的会让工作事半功倍.
文档地址: https://image.intervention.io/v2
原文标题:[intervention/image]操作图片从未如此简单
原文地址:https://phpreturn.com/index/a6222015f11263.html
原文平台:PHP武器库
版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。