2011-10-02 27 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。謝謝 –