axn/laravel-glide

Laravel的league/glide包装器

2.2.1 2024-04-17 13:52 UTC

This package is auto-updated.

Last update: 2024-09-17 14:44:17 UTC


README

此包提供了一个服务提供者,允许您非常容易地将Glide集成到Laravel项目中。此外,可以配置多个服务器

Glide是一个用PHP编写的简单按需图像处理库。它是非凡包联盟的一部分。

使用此包,您将能够即时生成图像处理并生成指向这些图像的URL。这些URL将进行签名,因此只有您才能指定应该生成哪些处理。每个处理都将被缓存。

升级

有关升级说明,请参阅UPGRADE.md文件。

安装

通过composer安装

composer require axn/laravel-glide

环境

通过添加以下行编辑您的环境文件

GLIDE_IMAGE_DRIVER=gd
GLIDE_SIGN_KEY=SetComplicatedSignKey

显然,您必须根据您的环境调整值。

驱动可以是"gd"或"imagick"。

建议使用128个字符(或更大)的签名密钥。为了帮助您完成此操作,您可以运行以下命令

php artisan glide:key-generate

文件系统磁盘

对于文件存储,可以使用所需的服务器数量。为了保持有序的存储架构,我们建议您根据用途创建多个磁盘。

然后,您将在/config/filesystems.php文件中创建一个磁盘以存储我们的图像,并创建另一个用于用户头像

'disks' => [
    //...
    'images' => [
        'driver' => 'local',
        'root' => storage_path('app/images'),
    ],

    'avatars' => [
        'driver' => 'local',
        'root' => storage_path('app/images'),
    ],
    //...
],

配置

然后使用Artisan发布配置文件

php artisan vendor:publish --tag="glide-config"

这些已发布的文件更多的是作为一个例子。请花时间阅读注释以了解您可以配置的内容。

例如,在这些文件中,我们配置了两个服务器,一个用于图像,另一个用于用户头像。

文件系统的"source"、"cache"和"watermarks"名称必须与应用程序文件系统配置中的磁盘名称相同。路径前缀将取决于配置的磁盘。

乍一看可能不太明显,但它为您提供了组织文件存储的很大自由度。 当您理解它是如何工作的以及您如何从中受益时,您会对它提供的灵活性感到高兴。

查看这些文件后,请根据需要删除、修改和创建您自己的文件。

用法

为每个配置的服务器创建一个路由

// App/Http/routes.php

use App\Http\Controllers\GlideController;
use Illuminate\Support\Facades\Route;

Route::get(config('glide.servers.images.base_url').'/{path}', [GlideController::class, 'images'])
    ->name('images')
    ->where('path', '(.*)');

Route::get(config('glide.servers.avatars.base_url').'/{path}', [GlideController::class, 'avatars'])
    ->name('avatars')
    ->where('path', '(.*)');

创建相应的控制器/动作

<?php

namespace App\Http\Controllers;

use Glide;
use Illuminate\Http\Request;

class GlideController extends Controller
{
    public function images($path, Request $request)
    {
        return Glide::server('images')->imageResponse($path, $request->all());
    }

    public function avatars($path, Request $request)
    {
        return Glide::server('avatars')->imageResponse($path, $request->all());
    }
}

将图像添加到您的视图中

<img src="{{ Glide::server('images')->url('example1.jpg', ['p' => 'medium]) }}">

<img src="{{ Glide::server('avatars')->url('example2.jpg', ['w' => 50, 'fit' => 'crop']) }}">