adevendorf/craft-pretzelimage

实时根据图像请求生成图像转换 -- 直接通过Web服务器作为公共文件加载,或与CDN结合。

安装: 31

依赖项: 0

建议者: 0

安全: 0

星级: 0

观察者: 1

分支: 0

开放问题: 0

类型:craft-plugin

v3.0.0 2024-06-11 17:22 UTC

This package is auto-updated.

Last update: 2024-09-11 17:53:58 UTC


README

Pretzel Image在浏览器请求时生成图像转换。生成的图像存储在公共文件夹中。因为控制器路由与实际文件相同,所以我们让Web服务器在将请求传递给插件处理之前先提供实际文件。

生成的文件可以从服务器随时删除,因为如果它不存在,它将重新创建。

图像被组织成两个字符的目录,然后是资产ID子目录。这样做是为了减轻单个文件夹中目录/文件过多的可能性。

此插件的原目的是在网站前面放置CDN,这样这些生成的图像在Craft CMS服务器上只能短暂存在。

实际上,此插件适用于高流量网站上的多实例Craft CMS配置。通过使用NFS服务器,可以在所有服务器之间重用相同的生成图像,然后对图像生成进行CMS负载均衡。

配置

Pretzel默认即可使用,但您可以自定义它。

PRETZEL_PATH

默认情况下,图像存储在@web/_imgs目录中,但您可以在.env文件中使用PREZTEL_PATH覆盖它。

PRETZEL_PATH="images"

PRETZEL_HOSTS

当Craft CMS处于Dev模式时,Pretzel将允许任何主机生成图像,否则它将只接受来自当前定义的网站URL或您在中的引用者。

PRETZEL_HOSTS="www.somesite.com,help.somesite.com"

如何使用

您需要将3个参数传递给url方法。

  1. Craft CMS资产
  2. 变换的对象(或数组)
  3. (可选)将应用于所有图像的默认变换对象
craft.pretzel.url(asset, { width: 100, height: 50 }, { position: asset.getFocalPoint() });

Twig

{% set asset = craft.assets().one() %}

{% set images = craft.pretzel.url(asset, [
    { width: 600, ratio: 1/1},
    { width: 1024, ratio: 16/9 }
], { position:asset.getFocalPoint()|default('50% 50%') }) %}

<img src="{{ images[0] }}" alt="{{ asset.title }}" />

如果传递了多个变换配置,则返回数组而不是URL字符串。

PHP(元素API)

use adevendorf\pretzelimage\Plugin;

$asset = $entry->image->one();
$image = Plugin::$plugin->pretzelService->url($asset, [
  'width' => 600, 'height' => 360, 'position' => $asset->getFocalPoint()
]);

图像选项

宽度

高度

比例

位置:50-50(默认)

模式:裁剪(默认),填充

要求

此插件需要Craft CMS 4或更高版本,以及PHP 8.0.2或更高版本。

TODO

  • 根据文件年龄自动从文件空间中删除旧图像。
  • 提供一个选项以从不存储生成的文件。
  • 允许定义CDN URL而不是使用Craft CMS网站URL。
  • 测试GraphQL支持