diff --git a/components/formats-bsd/src/loci/formats/tiff/TiffSaver.java b/components/formats-bsd/src/loci/formats/tiff/TiffSaver.java index 886d5b9555a..8a683cc1d44 100644 --- a/components/formats-bsd/src/loci/formats/tiff/TiffSaver.java +++ b/components/formats-bsd/src/loci/formats/tiff/TiffSaver.java @@ -1021,7 +1021,8 @@ private void makeValidIFD(IFD ifd, int pixelType, int nChannels) { if (nChannels == 1 && ifd.getIFDValue(IFD.COLOR_MAP) != null) { pi = PhotoInterp.RGB_PALETTE; } - else if (nChannels == 3) { + else if (nChannels == 3 || nChannels == 4) { + // TODO: handle CMYK; nChannels == 4, EXTRA_SAMPLES must not be present if (ifd.getIFDValue(IFD.COMPRESSION).equals(TiffCompression.JPEG.getCode())) { // see https://github.com/ome/bioformats/issues/3856 pi = PhotoInterp.Y_CB_CR; @@ -1029,6 +1030,10 @@ else if (nChannels == 3) { else { pi = PhotoInterp.RGB; } + if (nChannels == 4) { + int[] extraSamplesArray = {0}; + ifd.putIFDValue(IFD.EXTRA_SAMPLES, extraSamplesArray); + } } ifd.putIFDValue(IFD.PHOTOMETRIC_INTERPRETATION, pi.getCode());