如何在 Magnolia CMS 中获取图像尺寸

Posted

技术标签:

【中文标题】如何在 Magnolia CMS 中获取图像尺寸【英文标题】:How to get image dimensions in Magnolia CMS 【发布时间】:2016-06-23 11:34:44 【问题描述】:

我有一个绝对定位的图像,我需要在其父容器上设置高度,但现在我在 magnolia API 中找不到允许我获取资产/项目的宽度或高度的方法。

有没有办法仅使用原生 API 在 Magnolia CMS 中获取资产/项目的图像尺寸(高度、宽度)?

如果没有,你会怎么做?

【问题讨论】:

【参考方案1】:

我会以某种方式写它

import info.magnolia.dam.api.metadata.MagnoliaAssetMetadata;
// ...
if (asset.supports(MagnoliaAssetMetadata.class)) 
  MagnoliaAssetMetadata metadata = asset.getMetadata(MagnoliaAssetMetadata.class);
  long width = metadata.getWidth();
  long height = metadata.getHeight();
  // do whatever you need with the image dimensions
 else 
  // handle non-image asset

有关更多信息,请参阅MagnoliaAssetMetadata javadoc 和/或源代码(和相关类)。

【讨论】:

感谢您的努力!我会将其标记为答案,因为它回答了我的要求。仅供参考:与此同时,我使用我在documentation.magnolia-cms.com/display/DOCS/… 上找到的 FTL 模板函数完成了检索元数据的工作@【参考方案2】:

根据您的建议,我做了类似的事情。我正在使用 damTemplatingFunctions 来使用 JCR id 获取资产。

Node node = nodes.nextNode();
String imageJcrId = node.getProperty("image").getValue().getString();
Asset asset = damTemplatingFunctions.getAsset(imageJcrId);
MagnoliaAssetMetadata metadata1 = asset.getMetadata(MagnoliaAssetMetadata.class);
System.out.println(metadata1.getHeight());
System.out.println(metadata1.getWidth());

【讨论】:

感谢您的努力,但答案已被选择和验证。你的答案基本上是一样的……

以上是关于如何在 Magnolia CMS 中获取图像尺寸的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Salesforce 社区上渲染来自 Magnolia CMS 的图像?

在 Magnolia CMS 上通过 Java 获取大坝资产链接

如何在 Magnolia CMS 的本地系统中存储资产和网站内容?

Magnolia RSSAggregator 没有拾取图像?

在 Magnolia CMS 中以编程方式呈现模板区域

获取 magnolia cms 中执行的自定义操作的节点名称