brand3000 / nova-advanced-image-field
Nova 的高级图片字段,支持裁剪和缩放。
Requires
- php: ^8.0
- intervention/image: ^3.4.0
- laravel/nova: ^4.0
Suggests
- ext-exif: Install the exif extension to orientate images automatically.
- ext-gd: Install the GD extension to process images using GD.
- ext-imagick: Install the Imagick extension to process image using ImageMagick.
This package is auto-updated.
Last update: 2024-09-26 18:22:21 UTC
README
原始包是为 Laravel 11 定制的。
默认库设置为 GD。Intervention Image 包已更新到版本 3。
本文档的其余部分是从原始包中分叉出来的。
Nova 高级图片字段
Nova 的高级图片字段,允许您上传、裁剪和缩放图片
此包建立在 Nova 内置图片字段之上。它使用 Advanced Cropper 在前端显示裁剪器,并使用 Intervention Image 在后端处理图片。
要求
有关更多详细信息,请参阅 Intervention 要求。
入门
使用 Composer 将包安装到使用 Nova 的 Laravel 应用程序中
composer require brand3000/nova-advanced-image-field
如果您想使用 Imagick 作为默认的图片处理库,请遵循 Intervention 的 Laravel 文档。这将为您提供一个新的配置文件,您可以在此指定要使用的驱动程序。
代码示例
AdvancedImage 从 Image 扩展而来,因此您可以使用 Image 实现的任何方法。有关详细信息,请参阅 此处。
// Show a cropbox with a fixed ratio AdvancedImage::make('Photo')->croppable(16/9), // Resize the image to a max width AdvancedImage::make('Photo')->resize(1920), // Override the image processing driver for this field only AdvancedImage::make('Photo')->driver('imagick'),
要显示圆形头像,请使用 AdvancedAvatar 类或 rounded 方法
AdvancedAvatar::make('Avatar')->croppable(), AdvancedImage::make('Avatar')->croppable()->rounded(),
API
driver(string $driver)
覆盖 Intervention 用于图像操作的默认驱动程序。
AdvancedImage::make('Photo')->driver('imagick'),
croppable([float $ratio])
指定底层图像是否可裁剪。
如果第一个参数是数值,它将被用来定义裁剪框的固定宽高比。
AdvancedImage::make('Photo')->croppable(), AdvancedImage::make('Photo')->croppable(16/9),
resize(int $width = null[, int $height = null])
指定图像应调整的大小(宽度或高度)。
AdvancedImage::make('Photo')->resize(1920), AdvancedImage::make('Photo')->resize(600, 400), AdvancedImage::make('Photo')->resize(null, 300),
注意:此方法使用 Intervention Image resize(),带有放大和宽高比约束。
autoOrientate()
指定底层图像是否应定向。如果 Exif 数据中存在,它将旋转图像到指定的方向。
在某些情况下,这可能对于裁剪器正确工作是强制性的。
AdvancedImage::make('Photo')->autoOrientate(),
注意:PHP 必须通过 --enable-exif 编译,才能使用此方法。Windows 用户还必须启用 mbstring 扩展。有关更多详细信息,请参阅 Intervention Image 文档。
quality(int $quality)
指定转换图像的结果质量。
这仅适用于 JPG 格式,因为 PNG 压缩是无损的。值必须在 0(质量差,文件小)到 100(质量最好,文件大)之间。
AdvancedImage::make('Photo')->resize(600, 400)->quality(95),
注意:质量将被传递给 Intervention Image save() 方法。
convert(string $format)
指定所需的输出格式。
AdvancedImage::make('Photo')->convert('webp'),
注意:请参阅 Intervention Image encode() 的更多详细信息,包括允许的格式列表。
