2013-06-10 1 views
4

В настоящее время я пишу конвертер изображений на Java с помощью ImageIO. К сожалению, ImageIO не поддерживает многие форматы. В javadoc говорится, что он может быть расширен с помощью плагинов, но я не могу найти их. Я пробовал JAI (Java Advanced Imaging), но, похоже, это совершенно новая библиотека не только для плагина.Как сделать поддержку ImageIO более форматов

У вас есть идея, как сделать ImageIO поддержку более форматов?

+0

Какой формат вы ищите? Я использую плагин для NEF (формат Nikkon RAW), и я думаю, что видел один ICO, но я мог ошибаться: P – MadProgrammer

+0

Я ищу столько форматов, сколько могу получить: P где вы нашли эти плагины и как вы их добавили? – Markus

+0

[jrawio] (http://jrawio.rawdarkroom.org/) (NEF). В принципе, вы загружаете его и добавляете в путь к классам и начинаете читать файлы ... – MadProgrammer

ответ

7

ImageIO использует API-интерфейс поставщика услуг, а большинство плагинов - как банку, которую вы просто кладете в путь к классам. ImageIO автоматически подберет их.

Это, вероятно, легче дать хорошие ответы, если вы перечислите форматы, в которых вы нуждаетесь в поддержке.

Как уже упоминалось, JAI добавляет поддержку формата (обратите внимание, что вам нужен jai-imageio.jar, а не полный пакет JAI). Предупреждение. Многие из них требуют поддержки встроенной библиотеки, и проект, похоже, оставлен в неопределенности Oracle.

Я написал a couple of plugins (в основном читателей), что расширит количество поддерживаемых форматов (в первую очередь TIFF, PSD (Photoshop) и PICT, а также расширенную поддержку JPEG).

jrawio - еще один хороший пример (как указано в комментариях), если вам нужна поддержка RAW-файла камеры.

Googling поднимает еще немало. Как я уже сказал, все зависит от того, какие форматы вам нужны.

+1

Плагины Harald прекрасно работают, я только что добавил зависимости (6 файлов JAR) и решил очень загадочную проблему с некоторыми файлами JPEG, которые вызвали у меня Головная боль. Спасибо @haraldK! –

+0

FYI для PDF не существует, хотя он и есть в списке. – WMios

+1

@WMios Да, извините .. У меня было * намерение *, чтобы создать плагин PDF один раз ... Теперь это всего лишь пустой модуль-заполнитель, если кто-то захочет его реализовать. – haraldK

2

javax.imageio Поддержка форматов работает на основе интерфейса поставщика услуг. SPI - это только специальный Jar, который:

  1. Предоставляет класс для декодирования/кодирования изображения.
  2. Задает файл в определенном месте в Jar, чтобы идентифицировать класс, который кодирует декодирование &.

AFAIU, JAI предоставляет SPI для других форматов, не поддерживаемых 'plain' ImageIO.

Для получения дополнительной информации см. JavaTM Image I/O Technology.