后处理器
编辑该页面后处理器
我们已经知道,过滤器执行图像转换。这可能让你想知道后处理器适应运行时。帮助说明过滤器和后处理器的区别,强调以下是很重要的。
- 过滤器修改图像。
- 后处理器修改二进制图像。
毕竟过滤器运行,结果是一个二进制图像。然后提供、处理和返回所有已配置的后处理器。
提示
后处理器可以安全地连接,即使他们使用不同的mime类型。这使得它们适合特定于映像的优化技术。
内置的处理器
在默认情况下提供了一些内置的后处理器。
定制的处理器
你可以定义自己的后处理器执行任何图像的二进制操作要求。后处理器需要实现的PostProcessorInterface
:
1 2 3 4
接口PostProcessorInterface{公共函数过程(BinaryInterface美元二进制);}
中定义的PostProcessorInterface
一个名叫,唯一需要方法过程
提供了一个实例BinaryInterface
作为单一参数,随后提供的一个实例BinaryInterface
作为回报。
提示
您可以选择实现ConfigurablePostProcessorInterface
在你的后处理器允许它是可配置的。
以下是模板创建自己的后处理器,它将调用可执行。你必须设置EXECUTABLE_PATH
类常量的绝对路径所需的可执行文件。你也可以改变(“图像/ png”)
为您的自定义后处理器支持的mime类型。
1 2 3 4 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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
名称空间应用程序\服务;使用Liip\ImagineBundle\二进制\BinaryInterface;使用Liip\ImagineBundle\模型\二进制;使用Liip\ImagineBundle\想象一下\过滤器\PostProcessorInterface;使用ob娱乐下载\组件\过程\异常\ProcessFailedException;使用ob娱乐下载\组件\过程\ProcessBuilder;类MyCustomPostProcessor实现了PostProcessorInterface{公共常量EXECUTABLE_PATH =/道路/ /你/可执行的;/ * * *@paramBinaryInterface二进制* *美元@returnBinaryInterface * /公共函数过程(BinaryInterface美元二进制){/ /确保通过二进制是png如果(! in_array函数(美元二进制- >getMimeType ()),“图像/ png”))){返回美元二进制;}/ /创建一个临时的输入文件如果(假= = =美元输入= tempnam (美元路径= sys_get_temp_dir (),“custom_”)){扔新\异常(sprintf (的错误创建的tmp文件“% s”。,美元路径));}/ /填充临时文件通过文件内容写入美元输入,美元二进制- >getContent ());/ /创建一个构建器的过程,添加输入文件作为参数美元pb=新ProcessBuilder ([自我::EXECUTABLE_PATH]);美元pb- >add (美元输入);/ /得到一个流程实例并运行它美元过程=美元pb- >getProcess ();美元过程- >run ();/ /如果命令返回非零误差如果(0= = !美元过程- >getExitCode ()) {unlink (美元输入);扔新ProcessFailedException (美元过程);}/ /检索结果美元结果=新二元函数(美元输入),美元二进制- >getMimeType (),美元二进制- >getFormat ());/ /删除临时文件分离(美元输入);/ /返回结果返回美元结果;}}
你需要配置一个服务与您的自定义后处理器和标签liip_imagine.filter.post_processor
。
注册应用\ \ MyCustomPostProcessor服务
用这个名字my_custom_post_processor
,你会使用以下配置。
1 2 3 4 5 6
# app / config / services.ymlapp.post_processor.my_custom_post_processor:类:应用\ \ MyCustomPostProcessor服务标签:- - - - - -{名称:“liip_imagine.filter.post_processor”,post_processor:“my_custom_post_processor”}
1 2 3 4 5
< !- - - - - -- - - - - -app/config/services.xml -->< /span><服务id=“app.post_processor.my_custom_post_processor”类=“应用程序服务\ \ MyCustomPostProcessor”><标签的名字=“liip_imagine.filter.post_processor”post_processor=“my_custom_post_processor”/ >< /服务>
现在您的自定义后处理器可以在一组过滤器使用引用名称指定的通过post_processor
标签上面的属性(在这个例子中,my_custom_post_processor
)。
1 2 3 4 5 6 7
# app / config / config.ymlliip_imagine:filter_sets:my_special_style:post_processors:my_custom_post_processor:{}
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。