coderello / laravel-proximage
Laravel 的图片代理。
Requires
- php: ^7.3|^8.0
- laravel/framework: ^6.0|^7.0|^8.0
Requires (Dev)
- orchestra/testbench: ^4.0|^5.0|^6.0
This package is auto-updated.
Last update: 2024-09-18 20:48:32 UTC
README
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
作为第一个参数,应该返回 true
或 false
。
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 设备等多种设备上以正确的像素密度显示图像成为可能。您必须指定宽度、高度或两者,才能使此参数生效。使用介于 1
和 8
之间的值。
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::TOP
、CropAlignment::LEFT
、CropAlignment::CENTER
、CropAlignment::RIGHT
或 CropAlignment::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
调整图像伽玛。使用介于 1
和 3
之间的值。默认值是 2.2
,这是 sRGB 图像的合适近似值。
sharpen($value): self
锐化图像。所需格式:f,j,r
参数
- 平面
f
- 应用于平面区域的锐化。 (默认: 1.0) - 锯齿
j
- 应用于锯齿区域的重度。 (默认: 2.0) - 半径
r
- 应用锐化的锐化掩码,以像素为单位,但会带来性能成本。 (可选)
trim($value): self
从所有包含与左上角像素相似度内的值的边缘裁剪“无聊”的像素。裁剪操作在任何调整大小操作之前进行。使用介于 1
和 254
之间的值来定义要裁剪的相似颜色值的容差级别。您还可以仅指定 &trim,默认为容差级别 10。
background($value): self
设置图像的背景颜色。支持多种颜色格式。除了所有现代浏览器支持的 140 种颜色名称(在此列出)外,它还接受十六进制 RGB 和 RBG 透明度格式。
十六进制
- 3 位 RGB:
CCC
- 4 位 ARGB(透明度):
5CCC
- 6 位 RGB:
CCCCCC
- 8 位 ARGB(透明度):
55CCCCCC
blur($value): self
给图像添加模糊效果。使用介于 0
和 100
之间的值。
filter($value): self
将滤镜效果应用于图像。
具有可能值的枚举命名空间:Coderello\Proximage\Enums\Parameter\Filter
接受
Filter::GREYSCALE
Filter::SEPIA
Filter::NEGATE
quality($value): self
定义图像的质量。使用介于 0
和 100
之间的值。默认为 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)。请参阅 许可证文件 获取更多信息。