2017-09-26 168 views
0

我想要檢索高度和寬度在magnolia 中的圖像後,它被圖像處理器(ImageVariations)縮放/裁剪,但我似乎沒有找到正確的方法。如何獲取ImageRendition大小?

這是一個定義我在東京theme.yaml:

imaging: 
    class: info.magnolia.templating.imaging.VariationAwareImagingSupport 
    variations: 
    "large": 
     class: info.magnolia.templating.imaging.variation.SimpleResizeVariation 
     width: 745 
    [...] 

我做的是以下幾點:

  • 在我的模板(FTL)我首先通過取得JCR關鍵寫作[#assign itemKey = content.backgroundImage!""]

  • 我使用DamFunctions檢索資產由它的鍵 與damfn.getAsset(itemKey);

  • 我取的繪製(我理解爲圖像的縮放版本)與dam.getRendition(asset, renditionName)

我可以從AssetMetaData中讀取寬度和高度,但即使使用Rendition對象,我仍然可以獲得原始資產元數據,而不是預期的縮放元數據。

我做錯了什麼?

編輯:你能看看這張照片嗎?它顯示了我將用來檢索最大寬度和最大高度的路徑。請告訴我可以這樣做。

 /modules/imaging/config/generators/large/operations/resize@maxWidth

感謝您的幫助!

回答

1

隨着DAM API 1.x,Rendition你回來只是擴展資產和元數據無所作爲,因此你回來的元確實是原始資產的元數據。
隨着DAM API 2.x的變得稍微好一點,Rendition現在認識到,再現的元數據與原始資產不一樣,但它不提供正確的元,只是拋出UnsupportedOperationException
所以你被卡住了。從你的描述中,我推測你正在使用一些老版本的Magnolia,其中仍然使用DAM 1.x。

至於解決問題的方法,知道圖像再現的大小的唯一方法就是了解你使用的變化會如何影響圖像。
要動態獲取它,您需要弄清楚Imaging對象,確定應使用哪個圖像生成器(可以作爲再現鏈接路徑的一部分找到),從Imaging獲取正確的生成器,最有可能的是ImageOperationChain的實例,您需要爲它提供原始圖像以及所有指定爲您想要的繪製的一部分的操作,讓它完成工作,然後從生成的緩衝圖像中讀取寬度/高度,然後丟棄所有這些。在渲染模板時做效率非常低。

編輯: 如果您想直接從成像模塊讀取配置,則需要通過JCR API來讀取它,並確保你在系統方面也這樣做普通用戶有這樣的信息無法獲得(或不應該」無論如何)。
${ctx.getSystemContext().getJCRSession("config").getNode("/modules/imaging/config/generators/large/operations/resize").getProperty("maxWidth").getString()}應該做的。但它仍然需要你知道將使用什麼發生器,只是給你發電機的參數,而不保證它會以給定的方式修改資源。例如。在這種情況下,如果資產的寬度小於maxWidth,圖像將不會被調整大小,呈現的資產寬度將小於1300.但我想你已經知道了。

+0

感謝您的回答,Jan!但是,我可以簡單地使用渲染的名稱(變體)來找出它的最大寬度,這樣我就可以根據它進行分割並獲得我需要的高度? – Manticore

+1

不知何故,是的。理想情況下,從當前狀態獲取網站,然後使用它獲取當前主題,從主題獲取映像和所有列出的變體。但成像不會將配置變體的列表暴露給外部。你需要做的是,一旦你通過'$ {state.site.theme.name}找到主題名字'獲得該名稱並獲得主題節點(假設你的主題仍然存在於存儲庫中)並從那裏讀取變體。如果您的主題配置在光照模塊中並且位於文件系統中,則很可能會卡住。 – Jan

+0

我編輯了我的答案,並添加了一張圖片,顯示我將使用的路徑。是的,我正在使用YAML Configuration作爲主題。你認爲有一種方法可以使用NodeUtil或其他東西來獲取該節點路徑後面的屬性值嗎?或者說,你的'成像意味着什麼'沒有公佈配置變化的列表'外部'?我看到的另一個路徑是'/modules/site/config/themes/"+siteTheme.getName()+"/imaging/variations'... – Manticore