我们常常利用第三方的工具存储做事,比如七牛云或阿里云,他们都供应了“智能媒体做事”,实在便是在链接上加上各种参数,实现图片的裁剪、缩放等,可以便捷的实现缩略图,节省网络宽带,加快页面的访问。
事理很大略,便是吸收参数然后处理呗。如果用PHP做的话,不难,但是却要写好多代码。操作GD库太麻烦了。但现在,只要两行代码就能实现一套强大的图片处理功能。
// 实例化$server = League\Glide\ServerFactory::create([ 'source' => 'path/to/source/folder', 'cache' => 'path/to/cache/folder',]);// 可以在第二个参数传入数组$server->outputImage('users/1.jpg', ['w' => 300, 'h' => 400]);// 更大略的做法,直接传入GET参数$server->outputImage($path, $_GET);
功能预览表
glide可以吸收26个参数,险些可以涵盖所有的场景需求。

名称
功能参数
先容
方向
or
旋转图像,支持0, 90, 180或者 270,同时支持auto,会根据图片的Exif 信息自动确定位置
翻转
flip
翻转图像,支持水平、垂直、圆心等
裁剪
crop
将图像裁剪到指定尺寸,支持居中、左上角、居左等10多个设置
宽度
w
设置图像的宽度,根据fit参数表现不同
高度
h
设置图像的高度,根据fit参数表现不同
尺寸效果
fit
设置图像如何适应新的尺寸,显示最大宽度、最小宽度、变形、裁剪等等6中效果
设备像素比
dpr
通过此参数可以天生不同像素比的图片,在苹果和安卓设备中有更好的表现,最大8
亮度
bri
调度图像亮度
比拟度
con
调度图像比拟度
伽马
gam
调度图像伽马值值
锐化
sharp
锐化图像
模糊
blur
为图像增加模糊效果
像素化
pixel
为图像增加像素化效果
滤镜
filt
能够指定利用那些滤镜处理图像,内置灰度和褐色,可以自定义。
水印路径
mark
给图像增加水印
水印宽度
markw
设置水印的宽度
水印高度
markh
设置水印的高度
水印偏移量X
markx
水印的X偏移量
水印偏移量Y
marky
水印的Y偏移量
水印的添补
markpad
水印的添补,padding
水印的定位
markpos
水印的位置,居左、居中等
水印的透明度
markalpha
设置水印的透明度
背景
bg
设置图片的背景色
边框
border
给图片增加边框
质量
q
设置输入的质量
格式
fm
设置图像的编码格式,jpg、png等
功能先容本文对几个重点的功能做个先容。
尺寸效果 fit设置图像如何适应新的尺寸。
支持的参数:
contain: 默认。 调度图像大小以适应宽度和高度边界,而无需裁剪、扭曲或改变纵横比。max:调度图像大小以适应宽度和高度边界,而不会裁剪、扭曲或改变纵横比,如果图像小于输出尺寸,也不会增加图像的尺寸。fill:调度图像大小以适应宽度和高度边界,而不裁剪或扭曲图像,剩余空间用背景色添补。 天生的图像将匹配约束尺寸。fill-max:调度图像大小以适应宽度和高度边界而不裁剪,但如果图像较小则放大图像。 完成的图像将在宽度或高度上具有剩余空间(除非新图像的纵横比与旧图像的纵横比相同)。 剩余空间将用背景色添补。 天生的图像将匹配约束尺寸。stretch:拉伸图像以完备适宜约束尺寸。 天生的图像将添补尺寸,并且不会保持输入图像的纵横比。crop:调度图像大小以添补宽度和高度边界并裁剪任何多余的图像数据。 天生的图像将匹配宽度和高度限定,而不会扭曲图像。裁剪 crop当尺寸效果设置为裁剪时,可以利用裁剪参数。
裁剪位置:
您还可以通过添加裁剪位置来设置裁剪图像的位置。 接管 crop-top-left, crop-top, crop-top-right, crop-left, crop-center, crop-right, crop-bottom-left, crop-bottom或者 crop-bottom-right. 默认是 crop-center, 并且与 crop.
作物焦点除了裁剪位置之外,您还可以利用焦点更详细地确定确切的裁剪位置。 这是利用两个偏移百分比定义的: crop-x%-y%.
<img src="kayaks.jpg?w=300&h=300&fit=crop-25-75">
您还可以选择通过供应第三个值来放大您的焦点:一个介于 1 和 100 之间的浮点数。每个完全步长相称于 100% 缩放。 (例如。 x%-y%-2相称于以 200% 的比例查看图像)。 建议的范围是 1-10。
<img src="kayaks.jpg?w=300&h=300&fit=crop-25-75-2">
预裁剪
在任何其他调度大小操作之前将图像裁剪为特定尺寸。 哀求的格式: width,height,x,y. 就像利用截图工具那样,在先在图片上截取一段。
<img src="kayaks.jpg?crop=100,100,915,155">
存储驱动
可以利用flysystem驱动,这意味着不仅可以操作本地的文件,还支持各种存储办法,比如SFTP、FTP、工具存储等等。
// 图片地址$source = new League\Flysystem\Filesystem( new League\Flysystem\Local\LocalFilesystemAdapter('path/to/source/folder'));// 缓存地址$cache = new League\Flysystem\Filesystem( new League\Flysystem\Local\LocalFilesystemAdapter('path/to/cache/folder'));$server = new League\Glide\Server( $source, $cache,);
标准返回Response
可以通过getImageResponse方法获取标准的PSR-7相应工具,同时官方供应了laravel等框架的扩展相应工具。
默认配置可以设置默认的图片处理设置。
$server = League\Glide\ServerFactory::create([ 'defaults' => [ 'mark' => 'logo.png', 'markw' => '30w', 'markpad' => '5w', ]]);
预设
可以提前将各种参数设置好,然后直接传入预设的名称即可。比如下面的代码:
<?php$server = League\Glide\ServerFactory::create([ 'presets' => [ 'small' => [ 'w' => 200, 'h' => 200, 'fit' => 'crop', ], 'medium' => [ 'w' => 600, 'h' => 400, 'fit' => 'crop', ] ]]);
然后直策应用预设就可以了:
<img src="kayaks.jpg?p=small">
也可以同时利用多个预设:
<img src="kayaks.jpg?p=small,watermarked">
乃至可以利用带有附加参数的预设:
<img src="kayaks.jpg?p=small,watermarked&filt=sepia">
图像驱动
支持GD库和Imagick库。
$server = League\Glide\ServerFactory::create([ // 默认利用GD 'driver' => 'gd', // 利用ImageMagick 'driver' => 'imagick',]);
安装
利用compsoer安装即可。
composer require league/glide
安全保护
glide供应了一套署名机制,通过私钥(一长串字符)天生一个token,只有携带了这个token 才能调用参数,避免人们通过大量的图像调度参数攻击做事器。
配置<?phpuse League\Glide\Signatures\SignatureFactory;use League\Glide\Signatures\SignatureException;try { // 设置秘钥 $signkey = 'v-LK4WCdhcfcc%jtVC2cj%nVpu+xQKvLUA%H86kRVk_4bgG8&CWM#kb_7MUJpmTc=4GFmKFp7=K%67je-skxC5vz+r#xT?62tT?Aw%FtQ4Y3gvnwHTwqhxUh89wCa_'; // 验证访问 SignatureFactory::create($signkey)->validateRequest($path, $_GET);} catch (SignatureException $e) { // 处理非常}
天生URL
<?phpuse League\Glide\Urls\UrlBuilderFactory;// 上面的那个秘钥$signkey = 'v-LK4WCdhcfcc%jtVC2cj%nVpu+xQKvLUA%H86kRVk_4bgG8&CWM#kb_7MUJpmTc=4GFmKFp7=K%67je-skxC5vz+r#xT?62tT?Aw%FtQ4Y3gvnwHTwqhxUh89wCa_';// 实例化$urlBuilder = UrlBuilderFactory::create('/img/', $signkey);// 天生url$url = $urlBuilder->getUrl('cat.jpg', ['w' => 500]);// 利用urlecho '<img src="'.$url.'">';// 输入预览<img src="/img/cat.jpg?w=500&s=af3dc18fc6bfb2afb521e587c348b904">
总结
只要大略的几行代码,就实现了一套健全的图片处理HTTP做事,当你有类似的需求的时候,抓紧用上吧。
原文标题:[league/glide]两行代码实现一套强大的图片处理HTTP做事
原文地址:https://phpreturn.com/index/a64084605c3759.html
原文平台:PHP武器库
版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站许可任何形式的转载/引用文章,但必须同时注明出处。