过滤器

编辑本页

过滤器

过滤器执行图像转换操作。虽然一些筛选器集定义可能只需要一个筛选器,但更复杂的定义通常需要多个筛选器。可以将任意数量的过滤器链接起来以实现所需的结果。

提示

您可能需要定义自己的筛选器来满足应用程序的特定需求。引用自定义过滤器部分有关实现细节。

自定义过滤器

您可以编写自己的过滤器来执行任何图像转换操作。自定义过滤器需要实现过滤器LoaderInterface的数据加载器接口Liip \ ImagineBundle \二进制\加载程序名称空间):

1 2 3 4 5 6
名称空间LiipImagineBundle想象一下过滤器加载程序接口LoaderInterface公共函数负载(ImageInterface图像数组,选项= []);}

LoaderInterface有方法负载的实例ImageInterface还有一组选项。它必须返回ImageInterface

你需要配置服务标记它liip_imagine.filter.loader

注册一个筛选器应用\ \ MyCustomFilter服务作为my_custom_filter,使用以下配置:

  • YAML
  • XML
1 2 3 4 5 6 7
# app / config / services.yml服务:app.filter.my_custom_filter:类:应用\ \ MyCustomFilter服务标签:-名称:“liip_imagine.filter.loader”加载程序:my_custom_filter

你现在可以在配置中定义筛选器集时引用和使用你的自定义筛选器:

1 2 3 4 5 6 7
# app / config / config.ymlliip_imagine:filter_sets:my_special_style:过滤器:my_custom_filter:

动态过滤器

可以动态修改将应用到映像的配置,将配置作为第三个参数传递给applyFilter

12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
名称空间应用程序服务使用ob娱乐下载组件HttpFoundation响应使用ob娱乐下载组件HttpFoundationRedirectResponse使用LiipImagineBundle想象一下缓存缓存管理器使用LiipImagineBundle想象一下数据DataManager使用LiipImagineBundle想象一下过滤器FilterManagerImageService私人缓存管理器私人dataManager私人filterManager公共函数__construct(缓存管理器缓存管理器, DataManagerdataManager, FilterManagerfilterManager->缓存管理器=缓存管理器->dataManager =dataManager->filterManager =filterManager;}公共函数过滤器(int宽度, int高度过滤器'...'// config/packages/ liip_image .yaml中filter_set的名称路径'...'//图像的路径,相对于' /public/ '如果(!->缓存管理器->isStored (路径过滤器)) {二进制->dataManager->找到(过滤器路径);filteredBinary->filterManager->applyFilter (二进制过滤器, (“过滤器”= > [“缩略图”= > [“大小”= > [宽度高度]]]]);->缓存管理器->存储(filteredBinary路径过滤器);}返回RedirectResponse (->缓存管理器->解决(路径过滤器),反应::HTTP_MOVED_PERMANENTLY);}}
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。