#383 PSD CMYK > 5 channels fix

This commit is contained in:
Harald Kuhr 2017-10-16 14:26:28 +02:00
parent 0170ee36a9
commit c1fac78f3c
2 changed files with 4 additions and 5 deletions

View File

@ -227,19 +227,19 @@ public final class PSDImageReader extends ImageReaderBase {
if (header.channels == 4 && header.bits == 8) {
return ImageTypeSpecifiers.createBanded(cs, new int[] {0, 1, 2, 3}, new int[] {0, 0, 0, 0}, DataBuffer.TYPE_BYTE, false, false);
}
else if (header.channels == 5 && header.bits == 8) {
else if (header.channels >= 5 && header.bits == 8) {
return ImageTypeSpecifiers.createBanded(cs, new int[] {0, 1, 2, 3, 4}, new int[] {0, 0, 0, 0, 0}, DataBuffer.TYPE_BYTE, true, false);
}
else if (header.channels == 4 && header.bits == 16) {
return ImageTypeSpecifiers.createBanded(cs, new int[] {0, 1, 2, 3}, new int[] {0, 0, 0, 0}, DataBuffer.TYPE_USHORT, false, false);
}
else if (header.channels == 5 && header.bits == 16) {
else if (header.channels >= 5 && header.bits == 16) {
return ImageTypeSpecifiers.createBanded(cs, new int[] {0, 1, 2, 3, 4}, new int[] {0, 0, 0, 0, 0}, DataBuffer.TYPE_USHORT, true, false);
}
else if (header.channels == 4 && header.bits == 32) {
return ImageTypeSpecifiers.createBanded(cs, new int[] {0, 1, 2, 3}, new int[] {0, 0, 0, 0}, DataBuffer.TYPE_INT, false, false);
}
else if (header.channels == 5 && header.bits == 32) {
else if (header.channels >= 5 && header.bits == 32) {
return ImageTypeSpecifiers.createBanded(cs, new int[] {0, 1, 2, 3, 4}, new int[] {0, 0, 0, 0, 0}, DataBuffer.TYPE_INT, true, false);
}

View File

@ -114,10 +114,9 @@ final class PSDLayerMaskData {
if (dataLeft >= 2) {
// Real Flags. Same as Flags information above.
flags = pInput.readUnsignedByte();
dataLeft--;
// Real user mask background. 0 or 255.
defaultColor = pInput.readUnsignedByte();
dataLeft--;
dataLeft -= 2;
}
if (dataLeft >= 16) {
// Rectangle enclosing layer mask: Top, left, bottom, right.