如何在Symfony2 AvalancheImagineBundle中创建图像过滤器?

时间:2011-10-02 05:08:08

标签: php symfony

我正在使用Symfony 2,我刚刚成功安装了AvalancheImagineBundle。我创建了自己的缩略图过滤器,如README中所述,我创建了一个名为“profile”的第二个过滤器(目前只是为了确保它有效)与缩略图做同样的事情。

// 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 }

但是,我不希望个人资料成为缩略图。 我的问题:如何定义过滤器的新“类型”?

编辑:我看过README提供的example,但我无法理解如何编写自己的过滤器。我想写一个简单的过滤器,它采用“宽度”参数并将图像缩小到具有该宽度。

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

2 个答案:

答案 0 :(得分:2)

在这里回答你的问题很有趣,因为我是Imagine的创造者和维护者:)

基本上,将过滤器添加到捆绑包是一个单步过程

  • 创建过滤器加载器 - 实现Avalanche \ Bundle \ ImagineBundle \ Imagine \ Filter \ Loader \ LoaderInterface

  • 的类
  • 将它作为服务注册在Symfony DIC中并正确标记它 以下是标记默认缩略图过滤器加载程序的方法 您可以在此处的源代码中找到它 - https://github.com/avalanche123/AvalancheImagineBundle/blob/master/Resources/config/imagine.xml#L100

  • 最后,在yaml中指定过滤器,使用你在loader标签的“filter”属性中指定的任何值:

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

如果您遇到任何问题,请告诉我,另外,随意在捆绑的github存储库中创建问题。

干杯!

答案 1 :(得分:1)

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

有关示例实现,请查看ThumbnailFilterLoader类。