reliqarts/guided-image

此包已被弃用且不再维护。作者建议使用reliqarts/laravel-guided-image包。

使用Intervention Image的Laravel简化图像处理。


README

Laravel Guided Image

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

{
    "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方法删除图像实例。例如

$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 |