reliqarts/laravel-guided-image

通过 intervention image 为 Laravel 提供简单易用的图片处理。


README

Guided Image 是一个基于 Intervention Image 的 Laravel 图片工具包。

Built For Laravel Build Status (all) Scrutinizer Codecov Maintainability License Latest Stable Version Latest Unstable Version

 

Guided Image for Laravel

主要特性

  • 即时图像缩放
  • 即时缩略图生成
  • 图像上传
  • 智能图像重用;减少重复上传和空间资源浪费。

Guided Image 可以无缝集成到您现有的图像模型中。

指导路由

该包提供生成缩放/裁剪/占位图像的路由。

  • 路由可配置,您可以设置任何中间件和前缀。
  • 生成的图像被 缓存到磁盘,以避免频繁访问的图像重复生成并减少开销。

图像文件重用

针对不同模型实例使用相同图像的情况。

  • 该包提供了一个安全删除功能,允许图像被断开连接,只有在其他地方没有使用时才从磁盘删除。
  • 使用可覆盖的方法来确定何时可以将图像视为 安全 删除。

安装与使用

安装

使用 composer 安装;在控制台

composer require reliqarts/laravel-guided-image

或在 composer.json 中引入

{
    "require": {
        "reliqarts/laravel-guided-image": "^5.0"
    }
}

然后,在终端中运行 composer update 以拉取它。

最后,发布包资源和配置

php artisan vendor:publish --provider="ReliqArts\GuidedImage\ServiceProvider"

您可以选择使用 guidedimage-config 标签仅发布配置

php artisan vendor:publish --provider="ReliqArts\GuidedImage\ServiceProvider" --tag="guidedimage-config"

设置

设置所需的环境变量,以便包知道您的图像模型、控制器等。

示例环境配置

GUIDED_IMAGE_MODEL=Image
GUIDED_IMAGE_CONTROLLER=ImageController
GUIDED_IMAGE_ROUTE_PREFIX=image
GUIDED_IMAGE_SKIM_DIR=images

这些变量以及其他变量在 config 文件中有解释。

就这样!👌

使用方法

使用 Guided Image,您必须从您的 Image 模型中这样做。😏

实现 ReliqArts\GuidedImage\Contract\GuidedImage 协议并使用 ReliqArts\GuidedImage\Concern\Guided 特性,例如

use Illuminate\Database\Eloquent\Model;
use ReliqArts\GuidedImage\Concern\Guided;
use ReliqArts\GuidedImage\Contract\GuidedImage;

class Image extends Model implements GuidedImage
{
    use Guided;

    // ... properties and methods
}

请参阅示例 这里

在您的 ImageController 中实现 ReliqArts\GuidedImage\Contract\ImageGuide 协议并使用 ReliqArts\GuidedImage\Concern\Guide 特性,例如

use ReliqArts\GuidedImage\Contract\ImageGuide;
use ReliqArts\GuidedImage\Concern\Guide;

class ImageController extends Controller implements ImageGuide
{
    use Guide;
}

请参阅示例 这里

特性

安全删除图像(断开连接并条件性删除图像)

通过调用 remove 方法删除 Guided Image 实例。例如

$oldImage->remove($force);

$force 是可选的,默认为 false

链接生成

您可以像这样检索生成缩放或裁剪图像的指导链接

// resized image:
$linkToImage = $image->routeResized([
    '550',      // width
    '_',        // height, 'null' is OK 
    '_',        // keep aspect ratio? true by default, 'null' is OK
    '_',        // allow upsize? false by default, 'null' is OK
]);

// thumbnail:
$linkToImage = $image->routeThumbnail([
    'crop',     // method: crop|fit
    '550',      // width
    '_',        // height
]);

注意:在上面的示例中,_ 解析为 null

有关模型函数的更多信息,请参阅 GuidedImage 协议

有关控制器函数的更多信息,请参阅 ImageGuide 协议

路由

您的实际路由将严重依赖于您的自定义配置。以下是一个路由示例

|| GET|HEAD | image/.dum//{width}-{height}/{color?}/{fill?}           | image.dummy           | App\Http\Controllers\ImageController@dummy       | web |
|| GET|HEAD | image/.res/{image}//{width}-{height}/{aspect?}/{upSize?}| image.resize          | App\Http\Controllers\ImageController@resized     | web |
|| GET|HEAD | image/.tmb/{image}//m.{method}/{width}-{height}         | image.thumb           | App\Http\Controllers\ImageController@thumb       | web |
|| GET|HEAD | image/empty-cache                                       | image.empty-cache     | App\Http\Controllers\ImageController@emptyCache  | web |