java - 使用 Foundation Image 组件显示 SVG 图像

标签 java svg aem javax.imageio

我正在尝试使用 CQ5.6 中的图像组件在页面上包含 SVG 图像。我可以通过将图像从内容查找器拖动到组件来让组件使用 SVG,但这也会导致日志中出现错误:

Caused by: javax.imageio.IIOException: No decoder available to load the image
    at com.day.image.Layer.<init>(Layer.java:786)
    at com.day.image.Layer.<init>(Layer.java:588)
    at com.day.image.Layer.<init>(Layer.java:511)
    at com.day.cq.commons.ImageHelper.createLayer(ImageHelper.java:173)
    at com.day.cq.commons.ImageResource.getLayer(ImageResource.java:569)
    at libs.foundation.components.parbase.img_GET.writeLayer(img_GET.java:72)
    at com.day.cq.wcm.commons.AbstractImageServlet.doGet(AbstractImageServlet.java:80)
    at org.apache.sling.api.servlets.SlingSafeMethodsServlet.mayService(SlingSafeMethodsServlet.java:268)
    at org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:344)
    at org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:375)
    at org.apache.sling.scripting.java.impl.ServletWrapper.service(ServletWrapper.java:126)
    at org.apache.sling.scripting.java.impl.JavaScriptEngineFactory.callServlet(JavaScriptEngineFactory.java:211)
    ... 88 more

我已经多次尝试通过包含 javax.imageio 的 SVG 实现来添加对 SVG 的支持,但尚未成功。我最接近成功的是使用 Batik,在这种情况下,CQ5 似乎陷入了 Layer.java:769-781 的无限循环。

有人设法让 OOTB 图像组件与 SVG 图像一起使用吗?

最佳答案

我也遇到了同样的问题。我尝试从 CRX 手动下载该文件并在我的默认图像查看器中打开该文件。不幸的是,我的默认图像查看器也给出了同样的错误。

对我来说,问题在于上传该图像的一部分。我的InputStream传入JCRUtil.put跳过一些字节来写入,因为我使用了 TikaInputStream在写入之前验证上传文件的媒体类型。

关于java - 使用 Foundation Image 组件显示 SVG 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25435551/

相关文章:

aem - 在 CQ5 中获取页面作者

javascript - 使用 Javascript 和字符串创建 SVG 片段

javascript - 生成 SVG 形状

aem - 从jsp访问jcr中的数据

angularjs - 从不同的 JEE 应用程序获取 AEM 创作的模板

javascript - 如何在嵌入数据上调用鼠标函数?

java - 在选择框中列出所有可用的系统字体

java - Buck exopackage 多 dex 支持?

Java/SQL : MySQLSyntaxErrorException: Unknown column 'username' in 'where clause'

java - 如何在 ViewModel 中将 LiveData<List<User>> 转换为 LiveData<List<String>> ?