企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
* 高品质的图像处理扩展包 官网:https://glide.thephpleague.com/ 作用效果 ![](https://img.kancloud.cn/39/47/3947e23bdf98c275aa00a40874845b74_1009x790.png) 原理很简单,就是接收参数然后处理呗。如果用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); ``` ![](https://img.kancloud.cn/9b/f4/9bf4192579796c9c05c92e733f6c9226_979x752.png) ![](https://img.kancloud.cn/da/c0/dac096561e6395c3dcf10f635502e173_968x402.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%`. ~~~html <img src="kayaks.jpg?w=300&h=300&fit=crop-25-75"> ~~~ 您还可以选择通过提供第三个值来放大您的焦点:一个介于1和100之间的浮点数。每个完整步长相当于100%缩放。 (例如。`x%-y%-2`相当于以200%的比例查看图像)。 建议的范围是1-10。 ~~~html <img src="kayaks.jpg?w=300&h=300&fit=crop-25-75-2"> ~~~ 预裁剪 在任何其他调整大小操作之前将图像裁剪为特定尺寸。 要求的格式:`width,height,x,y`.就像使用截图工具那样,在先在图片上截取一段。 ~~~html <img src="kayaks.jpg?crop=100,100,915,155"> ~~~ ### 存储驱动 可以使用flysystem驱动,这意味着不仅可以操作本地的文件,还支持各类存储方式,比如SFTP、FTP、对象存储等等。 ~~~php // 图片地址 $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等框架的扩展响应对象。 ### 默认配置 可以设置默认的图片处理设置。 ~~~php $server = League\Glide\ServerFactory::create([ 'defaults' => [ 'mark' => 'logo.png', 'markw' => '30w', 'markpad' => '5w', ] ]); ~~~ ### 预设 可以提前将各种参数设置好,然后直接传入预设的名称即可。比如下面的代码: ~~~php <?php $server = League\Glide\ServerFactory::create([ 'presets' => [ 'small' => [ 'w' => 200, 'h' => 200, 'fit' => 'crop', ], 'medium' => [ 'w' => 600, 'h' => 400, 'fit' => 'crop', ] ] ]); ~~~ 然后直接使用预设就可以了: ~~~html <img src="kayaks.jpg?p=small"> ~~~ 也可以同时使用多个预设: ~~~html <img src="kayaks.jpg?p=small,watermarked"> ~~~ 甚至可以使用带有附加参数的预设: ~~~html <img src="kayaks.jpg?p=small,watermarked&filt=sepia"> ~~~ ### 图像驱动 支持GD库和Imagick库。 ~~~php $server = League\Glide\ServerFactory::create([ // 默认使用GD 'driver' => 'gd', // 使用ImageMagick 'driver' => 'imagick', ]); ~~~ ## 安装 使用compsoer安装即可。 ~~~bash composer require league/glide ~~~ ## 安全保护 glide提供了一套签名机制,通过私钥(一长串字符)生成一个token,只有携带了这个token才能调用参数,避免人们通过大量的图像调整参数攻击服务器。 ### 配置 ~~~php <?php use League\Glide\Signatures\SignatureFactory; use League\Glide\Signatures\SignatureException; try { // 设置秘钥 $signkey = 'v-LK4WCdhcfcc%jt*VC2cj%nVpu+xQKvLUA%H86kRVk_4bgG8&CWM#k*b_7MUJpmTc=4GFmKFp7=K%67je-skxC5vz+r#xT?62tT?Aw%FtQ4Y3gvnwHTwqhxUh89wCa_'; // 验证访问 SignatureFactory::create($signkey)->validateRequest($path, $_GET); } catch (SignatureException $e) { // 处理异常 } ~~~ ### 生成URL ~~~php <?php use League\Glide\Urls\UrlBuilderFactory; // 上面的那个秘钥 $signkey = 'v-LK4WCdhcfcc%jt*VC2cj%nVpu+xQKvLUA%H86kRVk_4bgG8&CWM#k*b_7MUJpmTc=4GFmKFp7=K%67je-skxC5vz+r#xT?62tT?Aw%FtQ4Y3gvnwHTwqhxUh89wCa_'; // 实例化 $urlBuilder = UrlBuilderFactory::create('/img/', $signkey); // 生成url $url = $urlBuilder->getUrl('cat.jpg', ['w' => 500]); // 使用url echo '<img src="'.$url.'">'; // 输入预览 <img src="/img/cat.jpg?w=500&s=af3dc18fc6bfb2afb521e587c348b904"> ~~~ ## 总结 只要简单的几行代码,就实现了一套健全的图片处理HTTP服务,当你有类似的需求的时候,抓紧用上吧。 ************************ 原文标题:\[league/glide\]两行代码实现一套强大的图片处理HTTP服务 原文地址:[https://phpreturn.com/index/a64084605c3759.html](https://phpreturn.com/index/a64084605c3759.html) 原文平台:[PHP武器库](http://phpreturn.com/) 版权声明:本文由[phpreturn.com](http://phpreturn.com/)(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。