2
從tif文件中提取元數據時,遇到類似上面提到的問題。它的大小超過450 MB。我使用最新版本(0.97)中的http://commons.apache.org/sanselan/庫進行解壓縮。當我執行代碼:當從圖片中提取xmp元數據時出現內存不足異常
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元數據。
你只是想擠出元數據?或者你需要解析整個文件?如果第二個,你將不得不增加你的記憶力,並且不能規避它。在之前的案例中,有一個解決方案,我稍後會搜索它,然後將其作爲答案發布。 – 2011-10-24 10:31:32
你解決了這個問題嗎?我正在開發一個小型的項目,我擔心Sanselan getXmpXml只是將Xmp XML作爲一個大字符串返回。在MINIMUM中,它最終將使用Xmp XML在圖像中佔用的相同數量的空間。我更喜歡桑塞蘭吐我回來一個我可以解析的流... – Randyaa 2012-03-23 03:44:34