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

标签 java tiff out-of-memory xmp

从 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 元数据,我将不胜感激。

最佳答案

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

java -Xmx512M FooProgramm

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

也许你可以从这个例子中尝试一些东西:

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

关于java - 从图片中提取 xmp 元数据时出现内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5376678/

相关文章:

Java 关键部分似乎不起作用

java - 在Spring中实现后台进程

java - ExecutorCompletionService 和 FixThreadPool 执行器之间的区别

java - 为什么有这么多Java框架?

python - 找不到 PIL group4 解码器

c# - 使用 C# 打印多页 Tiff

c# - 如何显示从 Tessnet (Tesseract) 获得的 tif 坐标图像

java - SAX 解析器 - OutOfMemoryError : Java heap space

android - 滚动图像列表时出现 OutOfMemory 异常

android - 在Android中的逐帧动画中导致OutOfMemoryError