ayvazyan10/nova-imagic

Imagic 是一个 Laravel Nova 字段包,它提供了图像处理功能,如裁剪、调整大小、质量调整和 WebP 转换。它使用强大的 Intervention Image 类进行图像处理。

安装量: 3,337

依赖者: 1

建议者: 0

安全: 0

星标: 14

关注者: 1

分支: 1

开放问题: 4

语言:Vue

v1.3.0 2023-08-06 19:32 UTC

This package is auto-updated.

Last update: 2024-09-06 21:49:17 UTC


README

Imagic for Laravel Nova 4

Imagic 是一个 Laravel Nova 字段包,它提供了图像处理功能,如裁剪、调整大小、质量调整和 WebP 转换。它使用强大的 Intervention Image 类进行图像处理。该包的目的是通过将其转换为 WebP 格式来优化图像以供网络使用,WebP 格式提供了更优的压缩和更快的加载时间。

使用 Images Magic 轻松实现高级图像处理

✅ 单个/多个上传
✅ 裁剪
✅ 调整大小
✅ 适应
✅ 质量控制
✅ WebP 转换
✅ 水印
✅ 自定义目录

Buy me a coffee

WEDO

要求

  • 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。有关更多信息,请参阅许可证文件