импорт com.sun.image.codec.jpeg. *

ла я хотел бы объяснить ситуацию / требования, которые приводят к вопросу:

В нашем веб-приложении мы не можем поддерживать изображения CMYK (JPEG), поскольку IE 8 и ниже не могут отображать их. Таким образом, мы должны определить, когда кто-то хочет загрузить такое изображение, и отрицать его.

К сожалению, ImageIO Java не будет читать эти изображения или не позволит мне получить обнаруженное цветовое пространство. От отладки похожеJPEGImageReader внутренне получает код цветового пространства 11 (что будет означатьJCS_YCCK) но я не могу безопасно получить доступ к этой информации.

При запросе читателя для типов изображений я ничего не получаю для CMYK, поэтому я могу предположить,no image types = unsupported image.

Я преобразовал исходное изображение CMYK в RGB с помощью инструмента обработки изображений, чтобы проверить, будет ли оно доступно для чтения (я попытался смоделировать действия администратора при получении сообщения «CMYK не поддерживается»). Тем не мение,JPEGImageReader не будет читать это изображение, так как онопредполагает (комментарий в источнике!) 3-компонентное цветовое пространство RGB, но заголовок изображения содержит 4 компонента (возможно, RGBA или ARGB) и, таким образом,IllegalArgumentException брошен

Таким образом, ImageIO не вариант, так как я не могу надежно получить цветовое пространство изображения, и я не могу сказать администратору, почему в противном случае хорошее изображение (оно может отображаться браузером) не будет принято из-за некоторых внутренних ошибка.

Это заставило меня попробовать JAI ImageIO, чьиCLibJPEGImageReader делает отличную работу и правильно читает все мои тестовые изображения.

Однако, поскольку мы развертываем наше приложение в JBoss, на котором могут размещаться и другие приложения, мы хотели бы сохранить их как можно более изолированными. AFAIK, мне нужно было бы установить JAI ImageIO на JRE или иным образом сделать нативные библиотеки доступными для их использования, и, таким образом, другие приложения также могут получить к ним доступ, что может вызвать побочные эффекты (по крайней мере, у нас чтобы проверить много, чтобы убедиться, что это не так).

Это объяснение вопроса, и вот оно снова:Есть ли чистая Java-альтернатива JAI ImageIO, которая надежно обнаруживает и, возможно, конвертирует изображения CMYK?

Заранее спасибо,

Томас

Ответы на вопрос(4)

Ваш ответ на вопрос