mercator/wn-media-plugin

Winter CMS 的媒体处理插件,替代了调整大小并引入了基于 Intervention 库的高级图像过滤功能。

安装: 704

依赖: 0

建议者: 0

安全: 0

星星: 4

关注者: 1

分支: 3

开放问题: 2

类型:winter-plugin

1.0.003 2022-09-17 15:11 UTC

This package is auto-updated.

Last update: 2024-09-17 19:29:05 UTC


README

改进了 WinterCMS 的媒体处理,包括

  • Winter CMS 图像调整大小替代:在浏览器可以显示的现代图像格式中进行渲染。
  • 使用 Intervention 库进行高级图像处理。

安装

composer

composer require mercator/wn-media-plugin
php artisan winter:up

github

git clone git@github.com:helmutkaufmann/wn-media-plugin.git

Twig 过滤器

iresize([width=null], [height=null], [filters=null], [extension=null], [quality=null])

ifilter([width=null], [height=null], [filters], [extension], [quality])

这些过滤器与调整图像大小并将过滤器应用于图像是相同的。

如果指定了 widthheight,则图像在应用任何 filters 之前会被调整大小。这可以显著提高性能。

为了保持图像的宽高比,将 任一 widthheight 设置为 零 (0)

如果将 widthheight 设置为 null,则保持此维度不变,并可能导致图像变形。示例

{{ image | iresize(300, null) }}

只调整图像的宽度。同样

{{ image | ifilter(null, 200) }}

只调整图像的高度

您可以将 Intervention filters 应用到图像上。有关可用过滤器的信息,请参阅 Intervention 网站

您可以将过滤器指定为 Twig 数组

{{ image | iresize(150, 100, [["blur", 1],["colorize", -100, 0, 0], ["flip"]])

或者(但这种方法将在未来被弃用)过滤器可以指定为字符串,例如

{{ image | iresize(150, 100, "blur(1)->colorize(-100, 0, 0)->flip('v')" }}

这两个例子都会首先将图像调整到 150x100 像素,添加一个 1% 的模糊滤镜,从图像中移除所有红色,并最后垂直翻转图像。

默认情况下,该插件将根据浏览器的渲染能力提供最优的图像格式。如果指定了可选参数 extension,则插件将转换为对应扩展的图像格式。有效的扩展是 jpg, gif, tiffwebp。如果相应的图像格式支持压缩,可以显式设置 quality

后果:如果您指定了显式的 exentsion,则浏览器可能无法显示它,因为缺乏功能(例如,某些 Safari 版本上的 webp 图像)。

Twig 函数

exif([key])

返回从图像中获取的所有 EXIF 元数据的数组(键/值)。如果设置了 key,则返回该 EXIF 键的字符串值。如果没有找到数据,则返回 null。

示例

exif("Model")

如果设置,则返回相机的型号名称。

iptc([key])

返回从图像中获取的所有 IPTC 元数据的数组(键/值)。如果设置了 key,则返回该 IPTC 键的字符串值。如果没有找到数据,则返回 null。

限制和下一步

这是插件的预生产版本。Winter 的原始调整大小功能尚未完全实现,特别是 mode。实现将在不久的将来进行。

必须实现错误处理,特别是当过滤器错误编写时(例如,blurs 而不是 blur)。

注意事项

Intervention 相对资源密集。因此

  • 谨慎应用 Intervention 过滤器。
  • 对于大文件(目前为800万像素),图像的初始调整大小由Winter的内部调整大小器处理。目前,这导致原始图像被打开,调整大小,压缩,存储,然后再次打开,以在最终结果再次压缩并保存到磁盘之前应用Intervention库的过滤器。这种方法通常会导致处理速度更快,但图像会重新压缩两次,这意味着(轻微的)质量损失。