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