ayvazyan10 / nova-imagic
Imagic 是一个 Laravel Nova 字段包,它提供了图像处理功能,如裁剪、调整大小、质量调整和 WebP 转换。它使用强大的 Intervention Image 类进行图像处理。
Requires
- php: ^7.1|^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
Imagic 是一个 Laravel Nova 字段包,它提供了图像处理功能,如裁剪、调整大小、质量调整和 WebP 转换。它使用强大的 Intervention Image 类进行图像处理。该包的目的是通过将其转换为 WebP 格式来优化图像以供网络使用,WebP 格式提供了更优的压缩和更快的加载时间。
使用 Images Magic 轻松实现高级图像处理
✅ 单个/多个上传
✅ 裁剪
✅ 调整大小
✅ 适应
✅ 质量控制
✅ WebP 转换
✅ 水印
✅ 自定义目录
要求
- PHP (^7.1 或更高版本)
- Laravel Nova (^4.0 或更高版本)
🚀 安装
通过 Composer 安装包。
composer require ayvazyan10/nova-imagic
📚 使用方法
以下是如何在 Laravel Nova 应用程序中使用 Imagic 的示例:在您的 Laravel Nova 资源中,使用 Imagic 字段
use Ayvazyan10\Imagic\Imagic; public function fields(Request $request) { return [ // ... Imagic::make('Image', 'image'), // ... ]; }
⚡ 所有方法
Imagic::make('Image') ->multiple() ->crop($width, $height, $left = 0, $top = 0) ->resize($width, $height) ->fit($width, $height) ->widen($width) ->quality($quality) ->disk($path) ->directory($path) ->convert($convert = true) ->watermark($path, $position = 'bottom-right', $x = 0, $y = 0);
📖 示例
以下是一些不同场景下的示例。
- 多个图像
要启用多个图像上传,请使用 multiple() 方法。请注意,当您使用 multiple() 方法时,您的数据库列应该是文本、长文本或 JSON 类型,以将所有图像以 JSON 格式存储。此外,您还可以通过拖放排序上传的图像。
Imagic::make('Images')->multiple(),
- 裁剪
要裁剪图像,请使用 crop() 方法
- x (可选) 矩形裁剪的左上角 X 坐标。默认情况下,矩形部分将居中于当前图像。
- y (可选) 矩形裁剪的左上角 Y 坐标。默认情况下,矩形部分将居中于当前图像。
Imagic::make('Image')->crop($width, $height, $x, $y),
- 调整大小
要调整图像大小,请使用 resize() 方法
Imagic::make('Image')->resize($width = int|null, $height = int|null),
- 通过宽度调整大小
指定图像调整大小的目标宽度(仅宽度)。
- 高度将自动调整以保持纵横比。
Imagic::make('Image')->widen($width = int),
- 质量
要调整图像质量,请使用 quality() 方法:默认为 90
Imagic::make('Image')->quality(90),
- WebP 转换
要将图像转换为 WebP 格式,请使用 convert() 方法
默认情况下,图像将被转换为 WebP 格式。要禁用转换,将 false 传递给 convert() 方法
Imagic::make('Image')->convert(false),
- 适应
在定义 Nova 资源中的 Imagic 字段时,可以使用 fit() 方法
Imagic::make('Image')->fit($width, $height),
- 带水印的字段
将 /path/to/watermark.png 替换为您的实际水印图像路径。
这将在指定路径、位置和偏移量(例如本例中为右下角 15x15 像素)的图像上添加水印。请记住在 Nova 资源文件顶部导入 Imagic 类
Imagic::make('Image')->watermark('/path/to/watermark.png', 'bottom-right', 15, 15),
- 指定磁盘
以下是如何使用的示例
Imagic::make('Image')->disk('public')
注意:磁盘不支持自定义目录,将引发错误。
- 目录自定义
默认情况下 - Imagic 使用此结构:/storage/imagic/year/month/day/image_name.webp
Imagic 类包含一个 directory() 方法,允许您指定图像上传的自定义目录路径。这允许您更灵活地管理图像文件的位置。
要使用此功能,在创建Imagic字段时调用directory()方法,并给它提供一个自定义的目录路径作为参数。此路径应为字符串,且不应以“/”开头或结尾。
以下是如何使用的示例
Imagic::make('Image')->directory('your/custom/directory')
在此示例中,通过此字段上传的任何图像都将保存到您的/custom/directory目录。
注意:提供的目录路径不应以“/”开头或结尾。如果是,将会抛出InvalidArgumentException异常。确保在使用此功能时目录路径格式正确。
例如,以下代码将抛出异常
// This will throw an exception because the directory path starts with a '/' // Directory structure should not start or end with a slash. Only in the middle. Imagic::make('Image') ->directory('/invalid/directory/path')
贡献
有关详细信息和工作清单,请参阅contributing.md
安全
如果您发现任何安全问题,请通过ayvazyan403@gmail.com发送电子邮件,而不是使用问题跟踪器。
作者
许可证
MIT。有关更多信息,请参阅许可证文件