diff --git a/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReader.java b/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReader.java old mode 100755 new mode 100644 index 7f5d1792..36c59844 --- a/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReader.java +++ b/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReader.java @@ -425,6 +425,7 @@ public class PSDImageReader extends ImageReaderBase { if (mImageResources == null) { mImageResources = new ArrayList(); long expectedEnd = mImageInput.getStreamPosition() + length; + while (mImageInput.getStreamPosition() < expectedEnd) { PSDImageResource resource = PSDImageResource.read(mImageInput); mImageResources.add(resource); diff --git a/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageResource.java b/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageResource.java old mode 100755 new mode 100644 index c5484460..5aa95625 --- a/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageResource.java +++ b/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageResource.java @@ -52,6 +52,7 @@ class PSDImageResource { mSize = pInput.readUnsignedInt(); readData(pInput); + // Data is even-padded if (mSize % 2 != 0) { pInput.read(); @@ -128,7 +129,7 @@ class PSDImageResource { public static PSDImageResource read(final ImageInputStream pInput) throws IOException { int type = pInput.readInt(); if (type != PSD.RESOURCE_TYPE) { - throw new IIOException("Wrong image resource type, expected 8BIM: " + PSDUtil.intToStr(type)); + throw new IIOException(String.format("Wrong image resource type, expected '8BIM': '%s'", PSDUtil.intToStr(type))); } // TODO: Process more of the resource stuff, most important are IPTC, EXIF and XMP data, diff --git a/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPrintFlags.java b/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPrintFlags.java old mode 100755 new mode 100644 index 0cb3ddca..c64380b9 --- a/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPrintFlags.java +++ b/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPrintFlags.java @@ -35,7 +35,7 @@ final class PSDPrintFlags extends PSDImageResource { mInterpolate = pInput.readUnsignedByte() != 0; mCaption = pInput.readUnsignedByte() != 0; - pInput.readUnsignedByte(); // Pad + pInput.skipBytes(mSize - 8); } @Override diff --git a/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPrintFlagsInformation.java b/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPrintFlagsInformation.java old mode 100755 new mode 100644 index 80583db7..d7c879d0 --- a/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPrintFlagsInformation.java +++ b/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPrintFlagsInformation.java @@ -28,6 +28,8 @@ final class PSDPrintFlagsInformation extends PSDImageResource { mField = pInput.readUnsignedByte(); mBleedWidth = pInput.readUnsignedInt(); mBleedScale = pInput.readUnsignedShort(); + + pInput.skipBytes(mSize - 10); } @Override