vis / image_storage_l5
L5 图像存储
Requires
- vis/curl_client_l5: 1.*
- dev-master
- 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
This package is not auto-updated.
Last update: 2024-09-15 01:02:14 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提供者对象
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键的同时使用鼠标点击来点选添加或删除对象。
图像管理
点击“上传图像”字段将出现选择上传图像的窗口。支持图像的多重上传。
在所有图像上传并创建它们的大小后,将发送请求以优化它们。
如果生成的任何图像大小不更新,则可以在相应尺寸标签中替换它。
视频管理
创建新视频时,只需指定视频服务和视频标识符。如果视频存在,它将被添加到总列表中。
如果配置中设置了相应的设置,则title和description字段将自动填充。
如果视频服务提供的预览图像不更新,则可以在“预览”标签中上传自己的图像。
文档管理
点击“上传文档”字段将出现选择上传文档的窗口。支持文档的多重上传。
在所有文档上传到所有附加字段后,将在原始文件上设置链接。
如果需要替换任何尺寸的文件,则可以在相应尺寸标签中替换它。
相册和视频相册的通用管理
创建相册并添加图像/视频后,可以通过拖动它们来管理图像/视频的顺序。
可以通过在按住ctrl键的同时使用鼠标点击来设置图像/视频作为相册的预览。