vis / artur_image_storage_l5
L5的图像存储
Requires
- vis/curl_client_l5: 1.*
- dev-master
- 3.0.3
- 3.0.2
- 3.0.1
- 2.0.3
- 2.0.2
- 2.0.1
- 1.5.1
- 1.4.15
- 1.4.14
- 1.4.13
- 1.4.12
- 1.4.11
- 1.4.10
- 1.4.9
- 1.4.8
- 1.4.7
- 1.4.6
- 1.4.5
- 1.4.4
- 1.4.3
- 1.4.2
- 1.4.1
- 1.3.14
- 1.3.13
- 1.3.12
- 1.3.11
- 1.3.10
- 1.3.9
- 1.3.8
- 1.3.7
- 1.3.6
- 1.3.5
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.2.17
- 1.2.16
- 1.2.15
- 1.2.14
- 1.2.13
- 1.2.12
- 1.2.11
- 1.2.10
- 1.2.9
- 1.2.8
- 1.2.7
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- dev-laravel11
- dev-laravel7
This package is not auto-updated.
Last update: 2024-09-14 18:31:40 UTC
README
适用于 Laravel 5.4 的媒体存储包,用于处理图像、视频和文档。
章节
安装
执行
composer require "vis/image_storage_l5":"1.*"
将以下内容添加到 config/app.php 的 providers 数组中
Vis\ImageStorage\ImageStorageServiceProvider::class,
执行表迁移
php artisan migrate --path=vendor/vis/image_storage_l5/src/Migrations
发布 config、js、css、images
php artisan vendor:publish --provider="Vis\ImageStorage\ImageStorageServiceProvider" --force
VIS-CMS
在 config/builder/admin.php 文件中的 menu 数组中添加设置
array( 'title' => 'Медиахранилище', 'icon' => 'picture-o', 'check' => function() { return Sentinel::hasAccess('admin.image_storage.view'); }, 'submenu' => array( array( 'title' => "Изображения", 'link' => '/image_storage/images', 'check' => function() { return Sentinel::hasAccess('admin.image_storage.view'); } ), array( 'title' => "Галереи", 'link' => '/image_storage/galleries', 'check' => function() { return Sentinel::hasAccess('admin.image_storage.view'); } ), array( 'title' => "Видео", 'link' => '/image_storage/videos', 'check' => function() { return Sentinel::hasAccess('admin.image_storage.view'); } ), array( 'title' => "Видеогалереи", 'link' => '/image_storage/video_galleries', 'check' => function() { return Sentinel::hasAccess('admin.image_storage.view'); } ), array( 'title' => "Документы", 'link' => '/image_storage/documents', 'check' => function() { return Sentinel::hasAccess('admin.image_storage.view'); } ), array( 'title' => "Теги", 'link' => '/image_storage/tags', 'check' => function() { return Sentinel::hasAccess('admin.image_storage.view'); } ), ) ),
在 config/builder/tb-definitions/groups.php 中添加权限并添加到组中
'Медиахранилище' => array( 'admin.image_storage.view' => 'Просмотр', 'admin.image_storage.create' => 'Создание', 'admin.image_storage.update' => 'Редактирование', 'admin.image_storage.delete' => 'Удаление', ),
配置配置
所有配置包含 3 个主要设置
title 设置,指示在 VIS-CMS 中显示的分区名称
'title' => "Галереи",
per_page 设置,指示在 VIS-CMS 中每页显示的记录数
'per_page' => 20,
fields 设置,包含将在编辑表单中输出的字段集
值:text、textarea、checkbox、select、datetime。定义方式与 VIS-CMS 相同。
支持动态创建新的字段和标签页
'fields' => array( ... ),
图像配置
上传图像的验证设置。错误中自动插入 'max_size' 和 'extension_list' 的值
'size_validation' => array( 'enabled' => true, 'max_size' => '1500000', 'error_message' => "Превышен максимальный размер изображения в [size] MB" ), 'extension_validation' => array( 'enabled' => true, 'allowed_extensions' => array('png', 'jpg', 'jpeg'), 'error_message' => "Допустимы только изображения форматов: [extension_list]" ),
上传 JPG 图像的质量设置。值:0-100
'quality' => 85,
使用 Vis.Builder\OptimizationImg 类优化上传图像的设置。
值:true/false
'optimization' => true,
使用图像的原始名称作为 title 字段的设置。
值:true/false
'source_title' => true,
设置在数据库中存储图像元数据。
使用 exif_read_data 函数,数据以 json 格式存储。
值:true/false
'store_exif' => true,
设置在删除图像实体时删除图像文件。
值:true/false
'delete_files' => true,
设置在重命名图像实体时重命名图像文件。
值:true/false
'rename_files' => true,
设置显示生成新尺寸按钮。
在需要为现有记录生成新尺寸时使用。
值:true/false
'display_generate_new_size_button' => true,
设置生成的图像尺寸。
允许在上传图像时自动生成其他尺寸的图像。
使用图像处理包 Intervention。
可以使用 Modify 设置修改图像,它接受 Intervention 参数
'sizes' => array( 'source' => array( 'caption' => 'Оригинал', 'default_tab' => true, ), 'cms_preview' => array( 'caption' => 'Превью в ЦМС', 'default_tab' => false, 'modify' => array( 'fit' => array(160, 160, function (\Intervention\Image\Constraint $constraint) { $constraint->upsize(); }), ), ),
文档配置
所有设置参数与图像类似,除了
允许在一个“文档”实体下存储多个文件的设置。
当需要在不同语言网站上显示不同文件时可以使用。
在上传文档时,为所有尺寸设置链接到原始文件,然后可以替换。
'sizes' => array( 'source' => array( 'caption' => 'Основной файл', 'default_tab' => true, ), 'ua' => array( 'caption' => 'Файл на укр', 'default_tab' => false, ), 'en' => array( 'caption' => 'Файл на англ', 'default_tab' => false, ), ),
视频配置
在设置 fields 数组中,有两个必填字段,分别负责服务和视频标识符。
'api_provider' => array( 'caption' => 'Видео сервис', 'type' => 'select', 'options' => config('image-storage.video_api.provider_names') ), 'api_id' => array( 'caption' => 'Идентификатор видео', 'type' => 'text', 'field' => 'string', 'placeholder' => 'Идентификатор видео', ),
视频 API 配置
设置控制向需要密钥的视频 API 发送请求
值:true/false
'enabled' => true,
设置视频 API 响应的缓存时间
值:x、0(注意:0 - 永久)、false
'cache_minutes' => 60,
设置自动填充 title 和 description 字段,来自视频 API 的响应
值:true/false
'set_data' => true,
设置提供视频 API 的供应商名称。
在创建或编辑视频时显示在 select 中
'provider_names' => array( 'youtube' => 'Youtube', 'vimeo' => 'Vimeo', ),
设置提供视频 API 的供应商
'providers' => array( 'youtube' => array( ... ), 'vimeo' => array( ... ), )
每个视频API提供商的设置
设置在服务上检查视频存在(不需要API密钥)
'video_existence_url' => '',
设置在服务上图像预览的链接(不需要API密钥)
'preview_url' => '',
设置在服务上图像预览的质量
'preview_quality' => '',
设置在服务上查看视频的链接(不需要API密钥)
'watch_url' => '',
设置在服务上嵌入视频的链接(不需要API密钥)
'embed_url' => '',
设置服务API的链接
'api_url' => '',
设置将从服务API请求的数据
'api_part' => '',
设置连接到服务API的密钥
'api_key' => '',
规范和示例
通用规范
要连接所需服务,需要在类开始处定义其调用。
use Vis\ImageStorage\Gallery; use Vis\ImageStorage\Image; use Vis\ImageStorage\Tag; use Vis\ImageStorage\VideoGallery; use Vis\ImageStorage\Video; use Vis\ImageStorage\Documents;
所有模型都可以应用标准请求编写原则,因为它们继承自Eloquent模型。
所有模型还使用VIS CMS \Vis\Builder\Helpers\Traits\TranslateTrait和\Vis\Builder\Helpers\Traits\SeoTrait特性
为所有记录生成唯一的slug,其值可以通过以下方法获取
public function getSlug()
所有模型的通用scope过滤器(\Models\Traits\FilterableTrait.php)
按id排序的过滤器
public function scopeOrderId(Builder $query, $order = "desc")
仅输出活动的记录的过滤器
public function scopeActive(Builder $query)
根据活动数组输出记录的过滤器
值:数组 $activity[0,1]
public function scopeFilterByActivity(Builder $query, array $activity = [])
按slug输出记录的过滤器
public function scopeSlug(Builder $query, $slug = '')
按标题输出记录的过滤器
public function scopeFilterByTitle(Builder $query, $title = '')
按创建日期输出记录的过滤器。
值:数组 $date['from' => '', to => '']
public function scopeFilterByDate(Builder $query, array $date = [])
按相关标签输出记录的过滤器。
值:数组 $tags[$idTags]
public function scopeFilterByTags(Builder $query, array $tags = [])
Eloquent与标签的关系。获取与实体相关联的所有标签
public function tags()
使用图像
Eloquent与相册的关系。获取与图像相关联的所有相册
public function galleries()
按相册过滤图像。
值:数组 $galleries[$idGalleries]
public function scopeFilterByGalleries(Builder $query, array $galleries = [])
按名称路由获取图像链接的方法。路由需要自行定义
public function getUrl() { return route("vis_images_show_single", [$this->getSlug()]); }
继承自src/Models/AbstractImageStorageFile.php的抽象的以下方法
获取指定大小的图像路径
值:配置中指定的尺寸之一,默认为source
public function getSource($size = 'source')
获取图像文件的分辨率
值:配置中指定的尺寸之一,默认为source
public function getFileExtension($size = 'source')
获取图像文件的名称
值:配置中指定的尺寸之一,默认为source
public function getFileName($size = 'source')
获取图像文件的大小
值:配置中指定的尺寸之一,默认为source
public function getFileSize($size = 'source')
获取图像文件的mime-type
值:配置中指定的尺寸之一,默认为source
public function getFileMimeType($size = 'source')
使用相册
Eloquent与图像的关系。获取与相册相关联的所有图像
public function images()
按图像存在过滤相册
public function scopeHasImages(Builder $query)
按活动图像过滤相册
public function scopeHasActiveImages(Builder $query)
按名称路由获取相册链接的方法。路由需要自行定义
public function getUrl() { return route("vis_galleries_show_single", [$this->getSlug()]); }
获取相册预览图像的方法
值:配置中指定的图像尺寸之一,默认为cms_preview
public function getGalleryPreviewImage($size = 'cms_preview')
使用文档
继承自src/Models/AbstractImageStorageFile.php的抽象的以下方法
获取指定大小的文档路径
值:配置中指定的尺寸之一,默认为source
public function getSource($size = 'source')
获取文档文件的分辨率
值:配置中指定的尺寸之一,默认为source
public function getFileExtension($size = 'source')
获取文档文件的名称
值:配置中指定的尺寸之一,默认为source
public function getFileName($size = 'source')
获取文档文件的大小
值:配置中指定的尺寸之一,默认为source
public function getFileSize($size = 'source')
获取文档文件的mime-type
值:配置中指定的尺寸之一,默认为source
public function getFileMimeType($size = 'source')
使用视频
Eloquent与图像预览的关系。获取已安装的图像预览对象
public function preview()
Eloquent与图像的关系。获取与相册相关联的所有图像
public function videoGalleries()
与API提供商的关系。根据视频类型获取API provider对象
public function api()
按相册过滤视频。
值:数组 $galleries[$idGalleries]
public function scopeFilterByVideoGalleries(Builder $query, array $galleries = [])
获取视频id的方法
public function getSource()
获取视频链接的方法。路由需要自行定义
public function getUrl() { return route("vis_videos_show_single", [$this->getSlug()]); }
获取视频预览图像链接的方法
获取或安装的图像预览或从API请求图像。
public function getPreviewImage($size = 'source')
使用视频 API
视频API实现了/Models/Interfaces/VideoAPIInterface.php接口并具有以下方法
获取视频链接的方法
public function getWatchUrl(array $urlParams);
获取嵌入视频链接的方法
public function getEmbedUrl(array $urlParams);
从API获取图像预览链接的方法
public function getPreviewUrl();
从API获取所有视频数据的方法
public function getApiResponse();
从API获取视频标题的方法
public function getTitle();
从API获取视频描述的方法
public function getDescription();
从API获取视频观看次数的方法
public function getViewCount();
从API获取视频点赞次数的方法
public function getLikeCount();
从API获取视频踩次数的方法
public function getDislikeCount();
从API获取视频收藏次数的方法
public function getFavoriteCount();
从API获取视频评论次数的方法
public function getCommentCount();
使用视频相册
Eloquent与视频的关系。获取与视频相册相关联的所有视频
public function videos()
按图像存在过滤视频相册
public function scopeHasVideos(Builder $query)
按活动视频过滤视频相册
public function scopeHasActiveVideos(Builder $query)
按名称路由获取视频相册链接的方法。路由需要自行定义
public function getUrl() { return route("vis_video_galleries_show_single", [$this->getSlug()]); }
使用标签
Eloquent与图像的关系。获取与标签相关联的所有图像
public function images()
与文档的Eloquent关系。获取所有带有标签的相关图像
public function documents()
与视频的Eloquent关系。获取所有带有标签的相关图像
public function videos()
与相册的Eloquent关系。获取所有带有标签的相关图像
public function galleries()
与视频相册的Eloquent关系。获取所有带有标签的相关图像
public function videoGalleries()
缓存
媒体库使用一系列标签进行缓存工作。
当媒体库的记录被修改时,会自动刷新与这些标签相关联的现有缓存。
每个实体的标签列表
- image-storage.video
- image-storage.document
- image-storage.video_gallery
- image-storage.gallery
- image-storage.image
- image-storage.tag
在 VIS CMS 中的管理特点
通用管理
界面与VIS-CMS界面尽可能接近。
每个部分的页眉中都有一个包含过滤器(部分有独特的过滤器)和创建新记录按钮的工具栏,该按钮将调用创建模态窗口。
页面底部有分页功能
通用图像、视频和文档管理
点击已添加的对象将调用记录编辑模态窗口
它包含大小和字段选项卡,这些选项卡在相应配置中指定。可以直接管理特定图像的关系。
选择对象区域时,将显示对象多选管理面板。
选择区域后,可以通过在按住ctrl键的同时使用鼠标点击来精确地添加或删除对象。
图像管理
点击“上传图像”字段时,将弹出选择要上传的图像的窗口。支持图像的多重上传。
在所有图像上传并创建它们的额外尺寸后,将发送请求以优化它们。
如果任何生成的图像尺寸未过时,则可以在该尺寸选项卡中替换它。
视频管理
创建新视频时,只需指定视频服务和视频标识符。如果视频存在,它将被添加到总列表中。
如果配置中设置了相应的设置,则标题和描述字段将自动填充。
如果视频服务提供的预览图像未过时,则可以在“预览”选项卡中上传自己的图像。
文档管理
点击“上传文档”字段时,将弹出选择要上传的文档的窗口。支持文档的多重上传。
在所有文档上传到所有附加字段后,将设置指向原始文件的链接。
如果需要替换某个尺寸的文件,则可以在该尺寸选项卡中替换它。
通用相册和视频相册管理
创建相册并添加图像或视频到其中后,可以通过在按住ctrl键的同时使用鼠标拖动来管理图像或视频的顺序。
可以通过在按住ctrl键的同时使用鼠标点击来将图像或视频设置为相册的预览。