You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by da...@apache.org on 2012/01/26 09:41:47 UTC
svn commit: r1236072 -
/commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/datareaders/DataReader.java
Author: damjan
Date: Thu Jan 26 08:41:47 2012
New Revision: 1236072
URL: http://svn.apache.org/viewvc?rev=1236072&view=rev
Log:
Deal with TIFF files with FillOrder=2.
Modified:
commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/datareaders/DataReader.java
Modified: commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/datareaders/DataReader.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/datareaders/DataReader.java?rev=1236072&r1=1236071&r2=1236072&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/datareaders/DataReader.java (original)
+++ commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/datareaders/DataReader.java Thu Jan 26 08:41:47 2012
@@ -109,6 +109,21 @@ public abstract class DataReader impleme
protected byte[] decompress(byte compressed[], int compression,
int expected_size, int tileWidth, int tileHeight) throws ImageReadException, IOException
{
+ TiffField fillOrderField = directory.findField(TIFF_TAG_FILL_ORDER);
+ int fillOrder = 1;
+ if (fillOrderField != null) {
+ fillOrder = fillOrderField.getIntValue();
+ }
+ if (fillOrder == 1) {
+ // good
+ } else if (fillOrder == 2) {
+ for (int i = 0; i < compressed.length; i++) {
+ compressed[i] = (byte) (Integer.reverse(0xff & compressed[i]) >>> 24);
+ }
+ } else {
+ throw new ImageReadException("TIFF FillOrder=" + fillOrder + " is invalid");
+ }
+
switch (compression)
{
case TIFF_COMPRESSION_UNCOMPRESSED : // None;