ctessier / nova-advanced-image-field
Nova 高级图像字段,支持裁剪和缩放。
Requires
- php: ^7.3|^8.0
- intervention/image: ^2.7
- 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.
README
Nova 高级图像字段,允许您上传、裁剪和缩放图像
此包建立在原生 Nova 图像字段之上。它使用 Advanced Cropper 在前端显示裁剪器,并使用 Intervention Image 在后端处理图像。
要求
有关详细信息,请参阅 Intervention 要求。
入门
使用 Composer 将包安装到使用 Nova 的 Laravel 应用程序中
composer require ctessier/nova-advanced-image-field
如果您想使用 Imagick 作为默认的图像处理库,请遵循 Laravel 的 Intervention 文档。这将为您提供一个新的配置文件,您可以在其中指定所需的驱动程序。
代码示例
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()
。