康诺科/laravel-imagecast

简化将图像存储到数据库的过程

0.1.1 2022-02-20 15:29 UTC

This package is auto-updated.

Last update: 2024-08-29 06:01:45 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

本包旨在简化管理Laravel图像的代码。

Alpha版本

注意!本包仍在开发中,我们仍在寻找最佳的应用模式,在此过程中,开发可能会破坏您的应用程序,我们不建议在生产环境中使用此应用程序,直到本包完全发布。

安装

Laravel版本

您可以通过composer安装此包

composer require konnco/laravel-imagecast

您可以使用以下命令发布配置文件

php artisan vendor:publish --provider="Konnco\ImageCast\ImageCastServiceProvider" --tag="laravel-imagecast-config"

这是已发布的配置文件的内容

return [
    'disk' => env('IMAGECAST_DISK', 'public'),
    'path' => 'images',
    'blurhash' => env('IMAGECAST_BLURHASH', false)
];

用法

很简单!只需将 Image 应用到图像类型属性中,例如

导入这些文件

use Konnco\ImageCast\Casts\Image;

并实现如下

protected $casts = [
    'avatar' => Image::class,
];

您还可以为每个字段应用自定义配置,例如

protected $casts = [
    'avatar' => Image::class.":80,images/account/avatar,jpg",
    'banner' => Image::class.":80,images/account/avatar,png",
];

参数 :quality,savePath,extension。对于 savePath 变量,您可能希望插入随机变量,如日期作为文件夹名称,您可以参考以下示例

protected $casts = [
    'avatar' => Image::class.":80,images/account/avatar/{date:Y-m-d},jpg",
];

定义所有这些配置后,您可以开始上传图像,例如

$user = New User();
$user->name = $request->name;
$user->avatar = $request->photo;
$user->save();

您可以用所有这些支持类型填充头像字段

  • string - 文件系统中图像的路径。
  • string - 图像的URL(必须启用allow_url_fopen)。
  • string - 二进制图像数据。
  • string - Data-URL编码的图像数据。
  • string - Base64编码的图像数据。
  • resource - 类型为gd的PHP资源。(当使用GD驱动程序时)
  • object - Imagick实例(当使用Imagick驱动程序时)
  • object - Intervention\Image\Image实例
  • object - SplFileInfo实例(用于处理Laravel通过Symfony\Component\HttpFoundation\File\UploadedFile上传的文件)

URL生成器

使用ImageCast URL生成器,您可以通过URL仅定义图像的宽度和高度,如果您已经习惯了cloudinary,您会感谢这个包。

我们应该配置Laravel的404处理器。打开 App\Exceptions\Handler 并在 render 方法中添加以下代码。

use Konnco\ImageCast\ImageCastExceptionHandler;

public function render($request, Throwable $exception) {
    return new ImageCastExceptionHandler($exception, request()->url(), function(){
        return parent::render($request, $exception);
    });
}

我们已经在 ImageCast 中添加了辅助函数,定义如下

return $user->avatar->toUrl();

Base64

您还可以使用此方法将图像转换为Base64图像

return $user->avatar->toBase64();

想法

我们非常感谢您对这个包的想法和贡献 :)

测试

composer test

更改日志

有关最近更改的更多信息,请参阅 更改日志

贡献

有关详细信息,请参阅 贡献指南

安全漏洞

请查阅 我们的安全策略 了解如何报告安全漏洞。

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅 许可证文件