thepublicgood / laravel-image-renderer
处理 Laravel 中图像的简单解决方案
Requires
- php: >7.3
- intervention/image: ^2.5
- intervention/imagecache: ^2.5
Requires (Dev)
- orchestra/testbench: ^4.0|^5.0|^6.0
- phpunit/phpunit: ^8.5|^9.0
README
由于我不再需要这个包,也不再想维护它,因此该包已被弃用。您仍然可以继续使用该包,但我建议查看
intervention/image
包(此包依赖该包),因为它内置了 URL 操作。实际上,已经没有必要使用这个包了。
Laravel Image Renderer
处理 Laravel 中图像的一个非常简单的解决方案。尤其是当无法使用 Artisan storage:link
命令时。
安装
像 Laravel 中的所有内容一样,使用 Composer 安装 Image Renderer。从终端,在项目根目录下运行
composer require thepublicgood/laravel-image-renderer
安装完成后,您可以使用以下命令发布配置文件
php ./artisan vendor:publish --provider=TPG\ImageRenderer\ImageRendererServiceProvider
这将把一个 renderer.php
配置文件放置到您的项目 /config
目录中。根据您的项目,您可能需要更新配置文件中的某些设置。
使用方法
将注册一个单独的路由,默认为:/images/{filename}
,但可以通过修改配置文件中的 routes.path
键来更改。您还可能希望修改 storage
配置选项。默认情况下,图像预计位于 /storage/app/images
。
一旦图像存储在正确的位置,对 http://mysite.test/images/filename.jpg
的 GET 请求将把图像渲染到浏览器。也支持子目录,因此可以通过指向 http://mysite.test/images/gallery/picture.jpg
来渲染文件 /images/gallery/picture.jpg
。
变换器
Laravel Image Renderer 使用 intervention/image
库来处理读取和渲染图像。这意味着图像可以即时变换。默认包含三个变换器:height
、width
和 square
。您可以通过传递变换器名称和值作为 URL 查询来按比例缩放图像。
http://mysite.test/images/filename.jpg?width=300
还利用了 intervention/imagecache
包来缓存变换,以便它们不会在每个请求中重新运行。要按高度缩放图像,可以使用 height=300
,或要创建一个 400 像素的正方形缩略图,可以使用 square=400
。
变换器也可以组合使用。
自定义变换器
您可以通过实现 TPG\ImageRenderer\Transformers\Contracts\Transformer
接口来编写自己的变换器。所有变换器类都必须实现一个接受两个参数的 handle
方法,并以 Transformer
结尾。
namespace App\Transformers; use TPG\ImageRenderer\Transformers\Contracts\Transformer; class MyTransformer implements Transformer { public function handle($image, array $values) { $image->crop($values[0], $values[1]); return $image; } }
$image
是 Intervention\ImageCache
类的实例,而 $values
数组包含传递给查询的任何值。在上面的示例中,期望两个值。记住,在变换器完成时返回 $image
。
一旦变换器类就绪,需要通知渲染器该变换器可用。这可以通过两种方式完成。您可以在 AppServiceProvider
中调用 ImageRenderer
门面的 addTransformer
方法
namespace App\Providers; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { public function register() { ImageRenderer::addTransformer( 'custom', App\Transformers\MyTransformer::class ); } }
或者将其添加到配置中的 transformers
键
return [ 'transformers' => [ // ... 'custom' => App\Transformers\MyTransformer::class, ] ];
现在您可以从 URL 使用变换器
http://mysite.test/images/filename.jpg?custom=300,400
贡献
欢迎拉取请求。对于重大更改,请首先打开一个问题来讨论您想进行什么更改。请参阅 CONTRIBUTING.md 以获取更多详细信息。
请确保根据需要更新测试。
许可
此包受 MIT 许可协议的约束。