2011-10-02 97 views
1

我正在使用Symfony 2,并且我刚刚成功安装了AvalancheImagineBundle。我按照自述文件中的描述创建了自己的缩略图过滤器,并且创建了第二个名为“profile”的过滤器(目前只是为了确保它的工作原理)与缩略图完全相同。如何在Symfony2 AvalancheImagineBundle中创建图像过滤器?

// app/config/config.yml 
# Avalanche Imagine Configuration 
avalanche_imagine: 
    web_root:  %kernel.root_dir%/../web 
    cache_prefix: images/cache 
    driver:  gd 
    filters: 
     my_thumb: 
      type: thumbnail 
      options: { size: [100, 100], mode: outbound } 
     profile: 
      type: thumbnail   <-- HOW DO I DEFINE OTHER TYPES? 
      options: { size: [200, 200], mode: outbound } 

但是,我不希望配置文件是缩略图。 我的问题:如何定义过滤器的新“类型”?

编辑:我已经看到了自述文件给出的example,但我无法理解如何编写我自己的过滤器。我想写一个简单的过滤器,它需要一个“宽度”参数并缩小图像以获得该宽度。

更新:我一直在摆弄这些图像过滤器一段时间了,我仍然像以前一样迷失......有人能给我提供正确的方向提示吗?我正在开发一个开源项目,如果它鼓励任何人:)

回答

1

您是否阅读了README中的“加载自定义过滤器”一章?它告诉你如何配置你的过滤器。请参阅ThumbnailFilterLoader类。

+0

是的,我见过。它看起来像是内置的'Thumbnail'类的封装,它没有向我演示如何编写非缩略图。我只需要创建一个接受一个参数(宽度)并将照片缩小到所需宽度的滤镜。 –

2

这很有趣,在这里回答你的问题,因为我的想象:)

基本上,一个过滤器添加到包是几个步骤的过程

  • 创建创建者和维护者过滤装载机 - 实现雪崩\包\ ImagineBundle \想象\过滤器\装载机\ LoaderInterface

  • 在Symfony的DIC注册为服务,并正确标记它 下面是一个类如何默认缩略图音响滤波器装载机被标记 您可以在包这里的源找到它 - 无论值在您的装载机标签的“过滤器”属性指定https://github.com/avalanche123/AvalancheImagineBundle/blob/master/Resources/config/imagine.xml#L100

  • 最后,指定要在YAML你的过滤器,使用:

    avalanche_imagine: 
        filters: 
         my_thumb: 
          type: <your filter name> 
          options: { #your options# } 
    

让我知道如果你遇到任何问题,另外,随意的束GitHub的库创建的问题。

干杯!

+0

如果可以的话,你可以在这里粘贴DIC容器的yml格式。即使从现有示例中,我发现很难遵循并从xml转换为yml。谢谢 –

相关问题