Чистая альтернатива Java для JAI ImageIO для обнаружения изображений CMYK

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

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

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

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

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

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

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

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

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

Заранее благодарим

Томас

13
задан Thomas 26 July 2011 в 11:38
поделиться