garbuzivan/imagemanager

此包的最新版本(0.1.1)没有可用的许可信息。

Laravel 的图像库管理器

0.1.1 2021-12-27 12:04 UTC

This package is auto-updated.

Last update: 2024-09-27 18:04:48 UTC


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