从图片中提取xmp元数据时出现内存不足异常

发布于 2024-10-24 12:23:05 字数 1020 浏览 0 评论 0原文

从 tif 文件中提取元数据时,我遇到了如上所述的问题。它的大小超过 450 MB。我正在使用最新版本的 http://commons.apache.org/sanselan/ 库进行提取(0.97 )。当我执行代码:时


String xmpMeta = null;
try {
    xmpMeta = Sanselan.getXmpXml(file);
} catch ...

,我得到以下堆栈跟踪:


Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
        at org.apache.sanselan.common.byteSources.ByteSourceInputStream.readBlock(ByteSourceInputStream.java:65)
        at org.apache.sanselan.common.byteSources.ByteSourceInputStream.access$000(ByteSourceInputStream.java:24)
        at org.apache.sanselan.common.byteSources.ByteSourceInputStream$CacheBlock.getNext(ByteSourceInputStream.java:54)
        at org.apache.sanselan.common.byteSources.ByteSourceInputStream$CacheReadingInputStream.read(ByteSourceInputStream.java:147)
...

我必须承认我正在增加虚拟机的 Xms 和 Xmx 属性,但它也失败了,但最后我对增加此属性不感兴趣,因为我可以获得更重的图片来解析。我将不胜感激在此问题上的帮助或引用另一个库来解析 JPEG / Tif 文件中的 xmp 元数据。

I have a problem like mentioned above when extracting metadata from tif file. It has size over 450 MB. I was extracting using http://commons.apache.org/sanselan/ library in newest version(0.97). When I execute code:


String xmpMeta = null;
try {
    xmpMeta = Sanselan.getXmpXml(file);
} catch ...

, I get following stack trace:


Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
        at org.apache.sanselan.common.byteSources.ByteSourceInputStream.readBlock(ByteSourceInputStream.java:65)
        at org.apache.sanselan.common.byteSources.ByteSourceInputStream.access$000(ByteSourceInputStream.java:24)
        at org.apache.sanselan.common.byteSources.ByteSourceInputStream$CacheBlock.getNext(ByteSourceInputStream.java:54)
        at org.apache.sanselan.common.byteSources.ByteSourceInputStream$CacheReadingInputStream.read(ByteSourceInputStream.java:147)
...

I have to admit that I was increasing Xms and Xmx properties of my vm and it also failed, but at the end I am not interested in increasing this properties becouse I can get heavier pictures to parse. I would be grateful for help in this issue or referencing another library to parse xmp metadata from JPEG / Tif files.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

嘿看小鸭子会跑 2024-10-31 12:23:05

那么你可以通过调用来调用具有更多堆空间的java,

java -Xmx512M FooProgramm

这将使用512M堆空间运行java。我知道这不是一个好的解决方案。

也许您可以尝试以下示例中的一些内容:

http://www.example -code.com/java/java-xmp-extract.asp

Well you could call java with more heap space by calling

java -Xmx512M FooProgramm

This will run java with 512M Heap space. I know that this is not a good solution.

Maybe you could try something out of this examples:

http://www.example-code.com/java/java-xmp-extract.asp

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文