Hej, muszę się zabezpieczyć przed wgrywaniem do serwisu, obrazków które są CMYK-iem, początkowo jest to tablica bajtów.

       byte[] coverFileData = p.getFileBuffer();
  • wrzucam ją do
    ByteArrayInputStream inputStreamWithImageData

    Jako że Util ImageIO nie radzi sobie z odczytaniem pliku jak poniżej czyli za pomocą :

 BufferedImage value = ImageIO.read(inputStreamWithImageData);

postanowiłem zapisywać obrazek do temporaryDirectory i tam spróbować z niego wyciągnąć czy jest CMYK czy RGB.

 public String checkImageColorSpace(byte[] coverFileData, SLImageFormat format) {
        try {
            File tempDir = commonCfgService.getTempDir();
            File parentDirectory = new File(tempDir.getAbsolutePath() + "\\" + UUID.randomUUID().toString());
            if (!parentDirectory.mkdirs()) {
                throw new IformatException("Cannot create temporary directory!");
            }

            File tiffFile = new File(parentDirectory, "cover." + format);
            FileOutputStream fileOutputStream = new FileOutputStream(tiffFile);
            fileOutputStream.write(coverFileData);
            fileOutputStream.flush();
            fileOutputStream.close();

        } catch (Exception e) {
            logger.error(getClass(), "checkImageColorSpace", e);
        }
        return null;
    }

Jak widać metoda kończy się na tym że plik jest zapisywany do folderu temp i dalej nie wiem jak wyciągnąć z niego ColorSpace.
Proszę was o pomoc. Pozdrawiam