melonsmasher/laravel-glide

此包已被弃用且不再维护。作者建议使用 axn/laravel-glide 包代替。

league/glide 的 Laravel 5.1+ 包装器

1.5.1 2018-06-24 02:35 UTC

This package is auto-updated.

Last update: 2022-02-01 13:13:45 UTC


README

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

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

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

安装

通过 composer 安装

composer require axn/laravel-glide

在 Laravel 5.5 中,服务提供者将自动注册。在框架的较旧版本中,只需将服务提供者添加到 config/app.php 中的提供者数组中。

// config/app.php

'provider' => [
    //...
    Axn\LaravelGlide\ServiceProvider::class,
    //...
];

在 Laravel 5.5 中,外观将自动注册。在框架的较旧版本中,只需将外观添加到 config/app.php 中的别名数组中。

// config/app.php

'aliases' => [
    //...
    'Glide' => Axn\LaravelGlide\Facade::class,
    //...
];

使用 artisan 发布包的配置文件

php artisan vendor:publish --provider="Axn\LaravelGlide\ServiceProvider"

通过添加以下行修改环境文件

GLIDE_IMAGE_DRIVER=gd
GLIDE_SIGN_KEY=SetComplicatedSignKey

显然,您需要根据您的环境调整值。

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

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

php artisan glide:key-generate

使用方法

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

// App/Http/routes.php

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

Route::get(config('glide.servers.avatars.base_url').'/{path}', [
    'uses' => 'GlideController@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());
    }
}

将图像添加到您的视图中

<!-- From default server -->
<img src="{{ Glide::url('example1.jpg', ['w' => 500, 'h' => 300, 'fit' => 'crop']) }}">

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