过滤器
编辑本页过滤器
过滤器执行图像转换操作。虽然一些筛选器集定义可能只需要一个筛选器,但更复杂的定义通常需要多个筛选器。可以将任意数量的过滤器链接起来以实现所需的结果。
提示
您可能需要定义自己的筛选器来满足应用程序的特定需求。引用自定义过滤器部分有关实现细节。
内置的过滤器
提供了许多内置过滤器来满足大多数常见用例。
自定义过滤器
您可以编写自己的过滤器来执行任何图像转换操作。自定义过滤器需要实现过滤器LoaderInterface
的数据加载器接口Liip \ ImagineBundle \二进制\加载程序
名称空间):
1 2 3 4 5 6
名称空间Liip\ImagineBundle\想象一下\过滤器\加载程序;接口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娱乐下载\组件\HttpFoundation\RedirectResponse;使用Liip\ImagineBundle\想象一下\缓存\缓存管理器;使用Liip\ImagineBundle\想象一下\数据\DataManager;使用Liip\ImagineBundle\想象一下\过滤器\FilterManager;类ImageService{私人$缓存管理器;私人$dataManager;私人$filterManager;公共函数__construct(缓存管理器$缓存管理器, DataManager$dataManager, FilterManager$filterManager){$这->缓存管理器=$缓存管理器;$这->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许可证。