JAI: чтение в 12-битных файлах JPEG

Я новичок в Java Advanced Imaging, и первым камнем преткновения, которого я достиг, является способность читать 12-битный однополосный JPEG-файл в оттенках серого. Я видел ссылки на то, что это возможно с JAI, но нет кода или даже предложений о том, как это должно быть сделано. Может ли кто-нибудь помочь мне с полезной ссылкой или коротким фрагментом кода?

До сих пор я использовал это руководство, но оно не помогло мне в этом вопросе.

Благодарю.

2 ответа

JAI-ImageIO зарегистрируется в API Java ImageIO, так что вы сможете использовать его, просто поместив jai-imageio jar в ваш путь к классу, вызывая обычные методы ImageIO, такие как ImageIO.read(файл).

Проблема с jpeg может заключаться в том, что у Java есть читатель jpeg по умолчанию в IIORegistry, и вам, возможно, придется выбрать правильный читатель вручную, используя что-то вроде ImageIO.getImageReadersForFormatName().

Другая вещь, связанная с более эзотерическими форматами, заключается в том, что JAI ImageIO обычно имеет две реализации - одну на чистом Java, а другую - на собственных двоичных библиотеках, поэтому убедитесь, что вы включили *lib-wrapper.dll (или любую другую, подходящую для вашей конкретной ОС) в LD_LiBRARY_PATH или есть в рабочем каталоге вашей программы. Нативная реализация обычно поддерживает варианты формата режима, чем чисто-Java.

Мы обычно читаем 12-битные изображения в оттенках серого в формате JPEG, используя JAI + JAI Image I / O.

В дополнение к предыдущим ответам вам нужны собственные двоичные библиотеки для чтения JPEG 12bit, поэтому необходима библиотека mediaLib.

Вам нужна только операция ImageRead из Image I/O:

byte[] imageBytes = ...
RenderedOp readImage = JAI.create("ImageRead", new MemoryImageInputStream(imageBytes));

Когда вы обычно читаете файлы изображений с FTP, так что получите byte[] и нужен обычай MemoryImageInputStream это оборачивает byte[] в ImageInputStream путем подклассов ImageInputStreamImpl,

Другие вопросы по тегам