thepublicgood/laravel-image-renderer

处理 Laravel 中图像的简单解决方案

v0.3.1 2022-03-18 07:22 UTC

This package is auto-updated.

Last update: 2024-09-18 12:54:26 UTC


README

由于我不再需要这个包,也不再想维护它,因此该包已被弃用。您仍然可以继续使用该包,但我建议查看 intervention/image 包(此包依赖该包),因为它内置了 URL 操作。实际上,已经没有必要使用这个包了。

Laravel Image Renderer

Build Status

处理 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 库来处理读取和渲染图像。这意味着图像可以即时变换。默认包含三个变换器:heightwidthsquare。您可以通过传递变换器名称和值作为 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;
    }
}

$imageIntervention\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 许可协议的约束。