garbuzivan / imagemanager
Laravel 的图像库管理器
Requires
- intervention/image: ^2.5.1
- spatie/laravel-image-optimizer: ^1.6
Requires (Dev)
- mockery/mockery: >=1.3
- phpunit/phpunit: ^8.5
README
安装
composer require garbuzivan/imagemanager
当使用标准 Transport 类时,该包不提供图像数据存储功能,并且在执行搜索和存储方法时将返回空数据。
EloquentTransport - 假定使用 Laravel Eloquent,需要预先发布配置和迁移。
Laravel
并发布配置
php artisan vendor:publish --force --provider="GarbuzIvan\ImageManager\ImageManagerServiceProvider" --tag="config"
现在需要应用迁移
php artisan migrate
库架构
使用方法
从文件加载 Laravel 配置
$config = new GarbuzIvan\ImageManager\Laravel\Config;
ImageManager 类的实例
$image = new GarbuzIvan\ImageManager\ImageManager($config);
按链接加载图像
$img = $image->load('https://zebrains.ru/static/images/intep_case_preview.4865ac.jpg');
从文件加载图像
$img = $image->load($_FILES["fileToUpload"]["tmp_name"]);
从 base64 字符串加载图像
$img = $image->load('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABmJLR0QA/wD/AP+gvaeTAAAAB3RJTUUH1ggDCwMADQ4NnwAAAFVJREFUGJWNkMEJADEIBEcbSDkXUnfSgnBVeZ8LSAjiwjyEQXSFEIcHGP9oAi+H0Bymgx9MhxbFdZE2a0s9kTZdw01ZhhYkABSwgmf1Z6r1SNyfFf4BZ+ZUExcNUQUAAAAASUVORK5CYII=');
保存加载的文件 $title 图像名称,便于搜索内容和 SEO
$img->save(string $title = null);
将图像输出到屏幕
echo $img->response();
按 ID 搜索图像
$image->getByID(1)->getImage();
按 hash 搜索图像
$image->getByHash('5b041cd17933badbb7658de2b45ba8de188df628')->getImage();
按文件大小搜索图像
参数采用 int 格式值,如果设置为 null,则参数在搜索时不会被考虑
$list = $image->getByFileSize($minFileSize = null, $maxFileSize = null, int $limitItem = 10, int $numberPage = 1);
此方法返回与请求匹配的图像数组。
按最小和最大尺寸搜索图像
参数采用 int 格式值,如果设置为 null,则参数在搜索时不会被考虑
$list = $image->getBySize(int $minWidth = null, int $maxWidth = null, int $minHeight = null, int $maxHeight = null, int $limitItem = 10, int $numberPage = 1);
此方法返回与请求匹配的图像数组。
按标题搜索图像
参数采用 string 格式值,如果设置为 null,则参数在搜索时不会被考虑
$list = $ImageManager->getTitle('%Тестовое%', int $limitItem = 10, int $numberPage = 1);
此方法返回与请求匹配的图像数组。
更新图像的标题
$img = $ImageManager->getByID(2)->getImage();
$img['title'] = 'Тестовое ZB изображение';
$ImageManager->update($img);
将图像连接到组件项目
组件参数是字符串类型,允许进行更复杂的用法,但默认可以传递例如参数(news)
项目参数是 int 类型,例如存储新闻 id
$img[] = $ImageManager->getByID(1)->getImage();
$img[] = $ImageManager->getByID(2)->getImage();
$ImageManager->setUse($img, 1, 'news');
或
$list = $ImageManager->getTitle('%Звезды%', 10, 1);
$ImageManager->setUse($list, 1, 'news');
获取组件项目中的使用图像列表
$images = $ImageManager->getUse(1, 'news');
元素键作为使用图像 ID 的键传递,可以根据该键删除项目组件中的使用图像
从组件项目中删除图像使用
$ImageManager->dropUse([5,7,31], 1, 'news');
从服务器完全删除图像
$ImageManager->getByID(9)->drop();
或
$list = $ImageManager->getTitle('%Звезды%', 10, 1);
$ImageManager->drop($list);
$config = new \GarbuzIvan\ImageManager\Laravel\Config; $imageManager = new \GarbuzIvan\ImageManager\ImageManager($config); $img = $imageManager->load('https://zebrains.ru/static/images/intep_case_preview.4865ac.jpg')->save(); $imageManager->setUse([['id' => 13], ['id' => 13], ['id' => 13]], 2, 'test'); $imageManager->dropUse([1], 2, 'test'); dd($imageManager->getUse(2, 'test'));
包配置
磁盘设置通常指向一个目录,相对于 URL,完整空间或相对于项目根目录,用于生成图像链接。
设置缓存允许定义在保存原始图像后的标准裁剪选项。
transport 指令允许编写自己的数据库操作解决方案,不同于 Laravel 的实现。
需要继承 \GarbuzIvan\ImageManager\Transport\AbstractTransport
pipes 指令允许编写自定义图像处理实现,例如在服务器上加载图像后添加水印。
需要继承 \GarbuzIvan\ImageManager\Pipes\AbstractPipes
测试
./vendor/bin/phpunit ./vendor/garbuzivan/imagemanager/tests