跳到内容

简介

编辑此页

基本数据流

此 bundle 的核心功能是提供一种以特定方式更改图像并缓存更改后版本的方法。有几个组件参与完成此操作。

检索原始图像

第一步是检索原始图像,即您要寻址的图像。

为了检索这样的图像,有所谓的 DataLoader,它们实现了 Liip\ImagineBundle\Binary\Loader\LoaderInterface。 这些加载器通常由 DataManager 管理,并使用依赖注入自动连接。

特定的 DataLoader 如何检索图像取决于加载器。 默认是从本地文件系统读取文件。 这是由 Liip\ImagineBundle\Binary\Loader\FileSystemLoader 实现的,它被配置为默认加载器。 您还可以使用绘图实用程序动态创建随机图像,或从任何已注册的流中读取二进制流。

关于这些 DataLoader 最重要的部分

  1. 它们基于给定的标识符 find 单个图像。
  2. 它们返回一个随时可用的 Imagine\Image\ImageInterface

查看关于数据加载器的章节以了解更多信息。

对原始图像应用过滤器

现在,我们已经获取了图像,我们可以以任何方式更改图像。 您可以创建调整大小的版本、缩略图、添加水印、将其转换为灰度、重新采样图像、更改其分辨率……您明白了。 任何更改都称为 Filter,源自 Imagine 库中的命名。

应用此类过滤器的责任绑定到 FilterLoader,它通常由 FilterManager 管理。 这些 FilterLoader 实现了 Liip\ImagineBundle\Imagine\Filter\Loader\LoaderInterfaceFilterManager 知道所谓的 filter_sets。 过滤器集可以定义要应用于每个前任结果的多个过滤器。

过滤器有一个目标:将其自身应用于提供的图像(由 DataLoader 加载)。 它接收选项以配置其实际结果,以自定义结果。

查看关于过滤器的章节以了解更多信息。

缓存过滤后的图像

过滤后的 - 要缓存的 - 图像是在过滤器集中应用所有过滤器后产生的图像。

为了不对同一图像再次应用每个过滤器(这在大多数情况下都会产生相同的过滤图像),此结果将被缓存。 此缓存由 CacheManager 管理,它管理所有所谓的 CacheResolver

默认的 CacheResolverWebPathResolver,它会将图像作为静态文件缓存在 web 目录中,因此 web 服务器不会再在这些图像上调用应用程序堆栈。 图像将在首次请求时创建,并将保持其静态缓存版本,直到被删除。

CacheResolver 实现了 Liip\ImagineBundle\Imagine\Cache\Resolver\ResolverInterface

它处理所谓的 path,它是您在寻址原始图像时使用的标识符,例如在您的模板中。 此路径与 DataLoader 中使用的路径相关。

CacheResolver 的职责是

  1. 如果可能,将给定的 path 解析为 Response
  2. 在给定的 path 下存储给定的内容,以便稍后解析,
  3. 生成一个 URI 以直接寻址缓存的图像,
  4. 删除缓存的图像。

查看关于缓存解析器的章节以了解更多信息。

这项工作,包括代码示例,根据 Creative Commons BY-SA 3.0 许可获得许可。
目录
    版本