optimistdigital / nova-media-field
Laravel Nova 的图片/画廊上传和库浏览字段。
Requires
- php: >=8.0.0
- guzzlehttp/guzzle: ^7.0.0
- intervention/image: ^2.7.1
- laravel/nova: ^3.0
- php-ffmpeg/php-ffmpeg: ^1.0.1
- dev-master
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.2
- 3.0.1
- 3.0.0
- v2.x-dev
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0-alpha.5
- 2.0.0-alpha.4
- 2.0.0-alpha.3
- 2.0.0-alpha.2
- 2.0.0-alpha.1
- 1.4.1
- 1.4.0
- 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.3.0
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.0
- 1.0.1
- 1.0.0
- 0.1.20
- 0.1.19
- 0.1.17
- 0.1.9
- 0.1.2
- 0.1.0
- dev-dependabot/npm_and_yarn/webpack-5.76.1
- dev-dependabot/npm_and_yarn/minimist-1.2.8
- dev-dependabot/npm_and_yarn/json5-1.0.2
- dev-dependabot/npm_and_yarn/loader-utils-1.4.2
- dev-fix/ico-files
- dev-dependabot/npm_and_yarn/terser-4.8.1
- dev-dependabot/npm_and_yarn/async-2.6.4
- dev-dependabot/npm_and_yarn/node-forge-1.3.0
- dev-feature/configurable-quality
- dev-patch-1
- dev-feature/duplication-check-frontend-v1
- dev-feature/duplication-check
- dev-bugfix/driver-handling
- dev-refactor/v2
- dev-feature/audio-video-file-thumbnails
This package is auto-updated.
Last update: 2023-05-14 18:17:03 UTC
README
将不再提供进一步更新!
Nova Media Field
此 Laravel Nova 包为 Laravel Nova 添加了一个简单的媒体上传字段和媒体浏览器。
要求
- Imagick
- Laravel Nova >= 2.10.0
功能
- 处理任何类型的文件
- 媒体浏览器
- 拖放多文件上传
- 多文件选择
- 拖放重新排序选定的文件
- 集合
- 自定义尺寸的缩略图生成器(也可通过命令重新生成)
- WebP 生成器(也可通过命令重新生成)
- 与 nova-translatable 兼容
升级到 v2
查看 CHANGELOG.MD
安装
使用 Composer 在 Laravel Nova 项目中安装此包并运行迁移
# Install package composer require optimistdigital/nova-media-field # And then run migrations php artisan migrate
然后在 NovaServiceProvider
中注册 NovaMediaLibrary
工具
use OptimistDigital\MediaField\NovaMediaLibrary;
public function tools()
{
return [
new \OptimistDigital\MediaField\NovaMediaLibrary,
];
}
使用方法
use OptimistDigital\MediaField\MediaField;
// ...
fields() {
return [
MediaField::make('Profile image', 'profile_image'),
// Configurable options:
MediaField::make('Config example', 'config_example')
->multiple() // Allows multiple images to to be selected
->collection('profile-pictures') // Defines a fixed collection of images instead of a global scope
->compact($width, $height = null) // Defines the thumbnail image size shown in Nova (to actually change thumbnail image size, use config)
]
}
图片缩略图
图片缩略图定义了上传图片的不同转换。这些转换可以在媒体字段配置文件中的 image_sizes
键下进行配置。
# config/nova-media-field.php
[
'image_sizes' => [
'thumbnail' => [
'width' => 150,
'height' => 150,
'crop' => true
],
'medium' => [
'width' => 300
]
],
]
crop
- 默认:false
,当为true
时,如果图片不适合定义的比例,则可能被裁剪。需要定义宽度和高度。width
- 调整图片的宽度height
- 调整图片的高度
只定义一个尺寸(宽度或高度)可以保持比例。
视频缩略图
媒体字段可以从视频的第一帧生成缩略图。它使用 ffmpeg
和 php-ffmpeg
来实现这一点。
要启用此功能,您必须
- 安装
ffmpeg
- 提供
ffmpeg
和ffprobe
的路径(在某些环境中)
如果 ffmpeg
和 ffprobe
路径未自动检测到,请将这些变量添加到您的 ENV 中。
# NB! Including extension (ie .exe on Windows)
FFMPEG_PATH=/usr/local/bin/ffmpeg
FFPROBE_PATH=/usr/local/bin/ffprobe
WebP 支持
默认情况下,在 nova 媒体配置文件中启用了 WebP 支持。在图片上传时,将自动为您生成 WebP。如果您已激活或计划稍后激活它,则可以使用以下命令重新生成缺失的缩略图和 WebP 文件。
重新生成缩略图
要重新生成缩略图(在定义新的缩略图尺寸等之后)运行此命令
php artisan media:regenerate-thumbnails
重新生成 WebP 文件
要重新生成缺失的 WebP 文件,请运行以下命令
php artisan media:regenerate-webp
集合
集合基本上是上传组,可以有自己的上传规则集合。集合配置位于 collection
键下的媒体字段配置文件中。
# config/nova-media-field.php
[
'collections' => [
'banners' => [
'label' => 'Banners',
'constraints' => [
'mimetypes' => [
'image/svg+xml',
'image/svg'
]
],
'image_sizes' => [
'thumbnail'
]
]
],
]
label
- 显示集合的标签constraints
- 验证规则数组(类似于请求验证)image_sizes
- 要生成的尺寸(覆盖默认值)
处理重复上传
如果 resolve_duplicates
设置为 true,则将生成原始上传文件的前 1MB 的 md5 哈希值,并用于检查是否发现任何文件重复。如果有,则将提供现有的媒体项目而不是保存新项目。
# config/nova-media-field.php
[
// When enabled tries to find if file already exists and
// serve that instead of creating a duplicate entry
'resolve_duplicates' => true,
]
定制
此软件包允许覆盖核心逻辑以满足项目可能需要的任何自定义需求
# config/nova-media-field.php
[
// media_handler is core class that handles file uploads, storage and thumbnail generation
'media_handler' => \OptimistDigital\MediaField\Classes\MediaHandler::class,
// media_resource is nova resource class for Media
'media_resource' => \OptimistDigital\MediaField\Media::class,
// media_model is laravel modal used throughout this package
'media_model' => \OptimistDigital\MediaField\Models\Media::class,
]
鸣谢
许可
Nova 媒体字段是开源软件,根据 MIT 许可证许可。