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