reliqarts / laravel-guided-image
通过 intervention image 为 Laravel 提供简单易用的图片处理。
Requires
- php: ^8.2
- ext-fileinfo: *
- ext-json: *
- anhskohbo/no-captcha: @dev
- illuminate/support: ^11.1
- intervention/image: ^3.7
- reliqarts/laravel-common: ^8.0
Requires (Dev)
- laravel/pint: ^1.15
- orchestra/testbench: ^9.0
- phpro/grumphp: ^2.5
- phpspec/prophecy-phpunit: ^2.0
- phpunit/phpunit: ^11.0
- yieldstudio/grumphp-laravel-pint: ^1.0
- dev-main
- v5.1.1
- v5.1.0
- v5.0.0
- v4.4.2
- v4.4.1
- v4.4.0
- v4.3.0
- v4.2.6
- v4.2.5
- v4.2.4
- v4.2.3
- v4.2.2
- v4.2.1
- v4.2.0
- v4.1.0
- v4.0.0
- v3.3.1
- v3.3.0
- v3.2.2
- v3.2.1
- v3.2.0
- v3.0.1
- v3.0.0
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v2.0.0-beta.6
- v2.0.0-beta.5
- v2.0.0-beta.4
- v2.0.0-beta.3
- v2.0.0-beta.2
- v2.0.0-beta.1
- v2.0.0-beta
- v1.1.1
- v1.1.0
- v1.0.12
- v1.0.11
- v1.0.10
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
This package is auto-updated.
Last update: 2024-09-08 00:29:46 UTC
README
Guided Image 是一个基于 Intervention Image 的 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 |