rkcreative/aws-image-handler

一个用于从 AWS Serverless Image Handler CloudFormation Stack 生成图像 URL 的 Laravel 扩展包。

v1.0.4 2024-03-01 17:05 UTC

This package is auto-updated.

Last update: 2024-08-30 18:22:19 UTC


README

Latest Stable Version Total Downloads GitHub stars Last Commit CI License

本扩展包为 AWS Serverless Image Handler 服务提供了一个 Laravel 包装器。

要求

  • PHP >= 7.3
  • Laravel >= 5.0
  • 已安装 Image Handler 服务的 AWS 账户

安装

您可以通过 composer 安装此扩展包

composer require rkcreative/aws-image-handler

安装扩展包后,由于 Laravel 的包发现功能,将自动注册 AwsImageHandlerServiceProviderImageHandler 门面。

如果您使用的是 Laravel 5.5 或更高版本,无需进一步操作。您可以直接开始使用 ImageHandler 门面。

use Rkcreative\AwsImageHandler\Facades\ImageHandler;

$url = ImageHandler::resize(200, 200)->createUrl('path/to/image.jpg');

如果您使用的是低于 5.5 版本的 Laravel,您需要手动注册服务提供者和门面。在您的 config/app.php 文件中的 providersaliases 数组中添加以下行

'providers' => [
    // Other service providers...

    Rkcreative\AwsImageHandler\AwsImageHandlerServiceProvider::class,
],

'aliases' => [
    // Other aliases...

    'ImageHandler' => Rkcreative\AwsImageHandler\Facades\ImageHandler::class,
],

配置

安装扩展包后,您应该发布配置文件

php artisan vendor:publish --provider="Rkcreative\AwsImageHandler\AwsImageHandlerServiceProvider" --tag="config"

此命令将在您的 config 目录中创建一个 aws-image-handler.php 配置文件。在此文件中,您可以设置您的分发 URL 和默认的 S3 存储桶。

return [
    'distributionUrl' => env('AWS_IMAGE_HANDLER_URL', 'default-url'),
    'defaultBucket'   => env('AWS_IMAGE_HANDLER_S3_BUCKET', 'default-bucket'),
];

您还应该在 .env 文件中添加 AWS_IMAGE_HANDLER_URLAWS_IMAGE_HANDLER_S3_BUCKET 变量。

AWS_IMAGE_HANDLER_URL=your-distribution-url
AWS_IMAGE_HANDLER_S3_BUCKET=your-default-bucket

用法

以下是如何使用 ImageHandler 类的详细示例

use Rkcreative\AwsImageHandler\Services\ImageHandler;

$imageHandler = new ImageHandler();
$imageHandler->resize(200, 200);

// Generate the URL for the transformed image
$url = $imageHandler->createUrl('path/to/image.jpg');

在此示例中,使用 resize 宏设置所需的图像尺寸,然后使用 createUrl 方法生成转换后图像的 URL。生成的 URL 将类似于以下格式:

https://your-cloudfront-url.com/eyJidWNrZXQiOiJidWNrZXQiLCJrZXkiOiJwYXRoL3RvL2ltYWdlLmpwZyIsImVkaXRzIjp7InJlc2l6ZSI6eyJ3aWR0aCI6MjAwLCJoZWlnaHQiOjIwMH19fQ==

在此 URL 中,your-cloudfront-url.com 是您的 CloudFront 分发 URL,而长的 base64 字符串是编码的编辑选项。

使用别名

此扩展包还提供了一个别名,您可以使用它来更轻松地访问。以下是一个示例:

use ImageHandler;

$url = ImageHandler::resize(200, 200)->createUrl('path/to/image.jpg');

在此示例中,ImageHandler::resize(200, 200) 等同于 (new Rkcreative\AwsImageHandler\Services\ImageHandler())->resize(200, 200)。您可以在 Laravel 应用程序的任何地方使用此别名。

可用的宏

ImageHandler 类包含以下宏:

  • smartCrop
  • roundCrop
  • contentModeration
  • crop
  • quality
  • resize
  • setRgba
  • rotate

您可以使用这些宏就像使用 ImageHandler 类上的任何其他方法一样。

$imageHandler = new ImageHandler();
$imageHandler->smartCrop($options);
$imageHandler->roundCrop($options);
// etc.

扩展自定义宏

您可以使用自己的宏扩展 ImageHandler 类。选项来自 Sharp Node.js 图像处理库。以下是这样做的方法:

  1. 创建一个新的服务提供者
php artisan make:provider ImageHandlerMacroServiceProvider
  1. 在您的新服务提供者的 boot 方法中添加您的宏
namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Rkcreative\AwsImageHandler\Services\ImageHandler;

class ImageHandlerMacroServiceProvider extends ServiceProvider
{
    public function boot()
    {
        // Sample blur image operation from the Sharp node.js image library to show how you could add it as a custom option.
        ImageHandler::macro('blur', function ($blur) {
            if ($blur < 0.3 || $blur > 1000) {
                throw new \InvalidArgumentException('Invalid blur value. It must be = a sigma value between 0.3 and 1000.');
            }

            $this->options['blur'] = $blur;

            return $this;
        });
    }
}

在此示例中,blur 宏接收一个 blur 值作为参数。然后,将 blur 值添加到图像处理选项中。该宏修改了 ImageHandler 实例的状态,然后返回该实例本身,允许进行方法链式调用。

  1. config/app.php 中的 providers 数组中注册您的新服务提供者
'providers' => [
    // Other service providers...

    App\Providers\ImageHandlerMacroServiceProvider::class,
],

现在,您可以使用您的宏就像使用 ImageHandler 类上的任何其他方法一样。

$imageHandler = new ImageHandler();
$imageHandler->blur(3)->createUrl('path/to/image.jpg');

在此示例中,使用 blur 宏为图像添加模糊效果。模糊值可以是介于 0.3(低模糊)和 1000(最大模糊)之间的任何数字。

贡献

欢迎贡献。我们通过 Github 的拉取请求接受贡献。

错误报告

如果您发现了错误,请在Github上创建一个问题描述问题,并尽可能提供更多信息。截图、错误信息和复现问题的示例代码都非常有帮助。

拉取请求

  • 记录任何行为变化 - 确保将README.md和其他相关文档保持最新。
  • 创建主题分支 - 不要要求我们从您的master分支中拉取。
  • 每个拉取请求一个特性 - 如果您想做不止一件事,请发送多个拉取请求。
  • 提供连贯的历史记录 - 确保您拉取请求中的每个单独提交都有意义。如果在开发过程中需要制作多个中间提交,请在提交前将它们压缩。
  • 为您的特性编写测试 - 这有助于我们确保一切按预期工作,并防止在添加新更改时出现回归。

要运行测试,请使用以下命令

vendor/bin/phpunit

快乐编码!

许可

MIT许可证(MIT)。请参阅许可文件获取更多信息。

作者