coderello/laravel-proximage

Laravel 的图片代理。

2.1.0 2020-11-18 11:48 UTC

README

Proximage

Proximage 是一个方便的包,通过 images.weserv.nl(免费图像缓存和调整大小服务)代理图像,可以帮助您显著提高网站的性能。

安装

您可以使用以下命令通过 composer 安装此包

composer require coderello/laravel-proximage

此包将自动注册自身。

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

php artisan vendor:publish --tag="proximage-config"

一些重要提示

图像不会在您的服务器上处理(包生成一个指向由第三方服务处理的图像的链接)。

指定输入图像的唯一方式是传递其 公开链接

使用示例

仅缓存

proximage($imageUrl)
  ->get();

缓存和调整大小

proximage($imageUrl)
  ->width(300)
  ->get();

缓存和裁剪

use Coderello\Proximage\Enums\Parameter;
proximage($imageUrl)
  ->crop(Parameter\CropAlignment::CENTER)
  ->transformation(Parameter\Transformation::SQUARE)
  ->get();

基本方法

url(?string $value): self

设置输入图像的链接。

parameter(string $name, $value): self

通过名称设置参数值。

您可以在 Coderello\Proximage\Enums 命名空间中的 Parameter 枚举中找到所有现有参数名称。

下面是使用图像处理方法的更便捷的方式。

shouldProxy(Closure $shouldProxy): self

设置回调以检测给定的图像是否应该被代理。回调接收 $url 作为第一个参数,应该返回 truefalse

template($template): self

将模板应用于当前的 ImageProxy 实例。

接受

  • string(模板类名称)
  • object(模板实例)

开箱即用的模板(您可以在 Coderello\Proximage\Templates 命名空间中找到它们)

  • AvatarTemplate
  • DisableProxyingForLocalEnvironmentTemplate

当然,您不仅限于这些。您可以创建自己的模板。每个模板都必须实现位于 Coderello\Proximage\Contracts 命名空间中的 Template 协议。

get(): ?string

返回代理图像的 URL。

图像处理方法

width($value): self

设置图像的宽度,以像素为单位。

height($value): self

设置图像的高度,以像素为单位。

devicePixelRatio($value): self

设备像素比用于轻松在 CSS 像素和设备像素之间进行转换。这使得在具有 Retina 显示屏的 Apple 设备和 Android 设备等多种设备上以正确的像素密度显示图像成为可能。您必须指定宽度、高度或两者,才能使此参数生效。使用介于 18 之间的值。

transformation($value): self

控制图像如何适应其目标尺寸。

枚举命名空间的作用域: Coderello\Proximage\Enums\Parameter\Transformation

接受

  • Transformation::FIT

默认。调整图像大小以适应宽度和高度边界,不裁剪、扭曲或更改纵横比。如果请求的大小大于原始大小,则不会对图像进行过采样。

  • Transformation::FIT_UP

调整图像大小以适应宽度和高度边界,不裁剪、扭曲或更改纵横比。如果图像小于输出大小,则增加图像大小。

  • Transformation::SQUARE

调整图像大小以填充宽度和高度边界,并裁剪任何多余的图像数据。结果图像将匹配宽度和高度约束,而不会扭曲图像。如果图像小于输出大小,则增加图像大小。

  • Transformation::SQUARE_DOWN

调整图像大小以填充宽度和高度边界,并裁剪任何多余的图像数据。结果图像将匹配宽度和高度约束,而不会扭曲图像。如果请求的大小大于原始图像的大小,则不会对图像进行超采样。

  • Transformation::ABSOLUTE

将图像拉伸到与约束尺寸完全匹配。结果图像将填充这些尺寸,并且不会保持输入图像的宽高比。

  • Transformation::LETTERBOX

调整图像大小以适应宽度和高度边界,不裁剪或扭曲图像,剩余空间用背景色填充。结果图像将匹配约束尺寸。

crop($value): self

控制图像的对齐方式。

枚举值的命名空间: Coderello\Proximage\Enums\Parameter\CropAlignment

裁剪位置

您可以通过添加裁剪位置来设置图像的裁剪位置。仅当转换是 Transformation::SQUARE 时有效。接受 CropAlignment::TOPCropAlignment::LEFTCropAlignment::CENTERCropAlignment::RIGHTCropAlignment::BOTTOM。默认是 CropAlignment::CENTER

裁剪焦点

除了裁剪位置外,您还可以通过焦点更具体地设置确切的裁剪位置。仅当转换是 Transformation::SQUARE 时有效。这使用两个偏移百分比来定义:crop-x%-y%

智能裁剪

通过删除无聊的部分将图像裁剪到特定尺寸。仅当转换是 Transformation::SQUARE 时有效。

接受

  • CropAlignment::ENTROPY:关注香农熵最高的区域。
  • CropAlignment::ATTENTION:关注亮度频率最高、颜色饱和度和肤色存在的区域。

手动裁剪

在执行其他任何调整大小操作后,将图像裁剪到特定尺寸。所需格式:width,height,x,y

mask($value): self

从预定义的形状列表中设置遮罩类型。

枚举值的命名空间: Coderello\Proximage\Enums\Parameter\Mask

接受

  • Mask::CIRCLE
  • Mask::ELLIPSE
  • Mask::TRIANLGE
  • Mask::TRIANLGE_180:倒置的三角形
  • Mask::PENTAGON
  • Mask::PENTAGON_180:倒置的五边形
  • Mask::HEXAGON
  • Mask::SQUARE:45度倾斜的正方形
  • Mask::STAR:五角星
  • Mask::HEART

maskTrim($value): self

从遮罩中移除剩余的空白。

maskBackground($value): self

设置遮罩的背景颜色。

orientation($value): self

旋转图像。接受 auto 或如果指定了角度,则将其转换为有效的 90/180/270 度旋转。例如,-450 将产生 270 度的旋转。默认是 auto。选项 auto 使用 Exif 数据自动正确定位图像。

brightness($value): self

调整图像亮度。使用介于 -100+100 之间的值,其中 0 表示没有变化。

contrast($value): self

调整图像对比度。使用介于 -100+100 之间的值,其中 0 表示没有变化。

gamma($value): self

调整图像伽玛。使用介于 13 之间的值。默认值是 2.2,这是 sRGB 图像的合适近似值。

sharpen($value): self

锐化图像。所需格式:f,j,r

参数

  • 平面 f - 应用于平面区域的锐化。 (默认: 1.0)
  • 锯齿 j - 应用于锯齿区域的重度。 (默认: 2.0)
  • 半径 r - 应用锐化的锐化掩码,以像素为单位,但会带来性能成本。 (可选)

trim($value): self

从所有包含与左上角像素相似度内的值的边缘裁剪“无聊”的像素。裁剪操作在任何调整大小操作之前进行。使用介于 1254 之间的值来定义要裁剪的相似颜色值的容差级别。您还可以仅指定 &trim,默认为容差级别 10。

background($value): self

设置图像的背景颜色。支持多种颜色格式。除了所有现代浏览器支持的 140 种颜色名称(在此列出)外,它还接受十六进制 RGB 和 RBG 透明度格式。

十六进制

  • 3 位 RGB:CCC
  • 4 位 ARGB(透明度):5CCC
  • 6 位 RGB:CCCCCC
  • 8 位 ARGB(透明度):55CCCCCC

blur($value): self

给图像添加模糊效果。使用介于 0100 之间的值。

filter($value): self

将滤镜效果应用于图像。

具有可能值的枚举命名空间:Coderello\Proximage\Enums\Parameter\Filter

接受

  • Filter::GREYSCALE
  • Filter::SEPIA
  • Filter::NEGATE

quality($value): self

定义图像的质量。使用介于 0100 之间的值。默认为 85。仅当格式设置为 Output::JPG 时才相关。

output($value): self

将图像编码为特定格式。如果没有指定,它将尊重原始图像格式。

具有可能值的枚举命名空间:Coderello\Proximage\Enums\Parameter\Output

接受

  • Output::JPG
  • Output::PNG
  • Output::GIF
  • Output::TIFF
  • Output::WEBP

interlace($value): self

向 GIF 和 PNG 添加交错。JPEG 变为渐进式。

encoding($value): self

将图像编码以直接用于 <img> 标签的 src=中。

具有可能值的枚举命名空间:Coderello\Proximage\Enums\Parameter\Encoding

接受

  • Encoding::BASE64

defaultImage($value): self

如果加载图像有问题,则会显示错误。然而,可能存在这样的需求,即您希望提供默认图像而不是损坏的图像。

page($value): self

加载给定的页面(用于 PDF、TIFF 和多尺寸 ICO 文件)。值从零开始编号。

filename($value): self

指定返回到 Content-Disposition 标头的文件名。文件名只能包含字母数字字符。

测试

您可以使用以下命令运行测试:

composer test

更改日志

请参阅 CHANGELOG 获取有关最近更改的更多信息。

贡献

请参阅 CONTRIBUTING 获取详细信息。

许可证

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