You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ni...@apache.org on 2013/01/10 16:30:00 UTC
svn commit: r1431426 - in /tika/trunk/tika-parsers/src:
main/java/org/apache/tika/parser/image/PSDParser.java
test/java/org/apache/tika/parser/image/PSDParserTest.java
test/resources/test-documents/testPSD2.psd
Author: nick
Date: Thu Jan 10 15:29:59 2013
New Revision: 1431426
URL: http://svn.apache.org/viewvc?rev=1431426&view=rev
Log:
Patch from Emmanuel Hugonnet from TIKA-1021 - PSD data lengths are even padded
Added:
tika/trunk/tika-parsers/src/test/resources/test-documents/testPSD2.psd (with props)
Modified:
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/image/PSDParser.java
tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/image/PSDParserTest.java
Modified: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/image/PSDParser.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/image/PSDParser.java?rev=1431426&r1=1431425&r2=1431426&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/image/PSDParser.java (original)
+++ tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/image/PSDParser.java Thu Jan 10 15:29:59 2013
@@ -165,7 +165,7 @@ public class PSDParser extends AbstractP
nameLen++;
if(v == 0) {
- // Even size, may be padded
+ // The name length is padded to be even
if(nameLen % 2 == 1) {
stream.read();
nameLen++;
@@ -178,6 +178,10 @@ public class PSDParser extends AbstractP
}
int dataLen = EndianUtils.readIntBE(stream);
+ if(dataLen %2 == 1) {
+ // Data Length is even padded
+ dataLen = dataLen + 1;
+ }
totalLength = 4 + 2 + nameLen + 4 + dataLen;
data = new byte[dataLen];
Modified: tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/image/PSDParserTest.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/image/PSDParserTest.java?rev=1431426&r1=1431425&r2=1431426&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/image/PSDParserTest.java (original)
+++ tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/image/PSDParserTest.java Thu Jan 10 15:29:59 2013
@@ -25,6 +25,8 @@ import org.xml.sax.helpers.DefaultHandle
import junit.framework.TestCase;
+import static junit.framework.Assert.assertEquals;
+
public class PSDParserTest extends TestCase {
private final Parser parser = new PSDParser();
@@ -43,4 +45,19 @@ public class PSDParserTest extends TestC
assertEquals("51", metadata.get(Metadata.IMAGE_LENGTH));
assertEquals("8", metadata.get(Metadata.BITS_PER_SAMPLE));
}
+
+ /**
+ * Tests a very basic file, without much metadata,
+ * where some of the data lengths are padded to be even
+ */
+ public void testOddPSD() throws Exception {
+ Metadata metadata = new Metadata();
+ metadata.set(Metadata.CONTENT_TYPE, "image/x-psd");
+ InputStream stream =
+ getClass().getResourceAsStream("/test-documents/testPSD2.psd");
+ parser.parse(stream, new DefaultHandler(), metadata, new ParseContext());
+ assertEquals("69", metadata.get(Metadata.IMAGE_WIDTH));
+ assertEquals("70", metadata.get(Metadata.IMAGE_LENGTH));
+ assertEquals("8", metadata.get(Metadata.BITS_PER_SAMPLE));
+ }
}
Added: tika/trunk/tika-parsers/src/test/resources/test-documents/testPSD2.psd
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/resources/test-documents/testPSD2.psd?rev=1431426&view=auto
==============================================================================
Binary file - no diff available.
Propchange: tika/trunk/tika-parsers/src/test/resources/test-documents/testPSD2.psd
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream