JAI: чтение в 12-битных файлах JPEG - PullRequest
3 голосов
/ 04 августа 2010

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

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

Спасибо.

Ответы [ 2 ]

1 голос
/ 10 августа 2010

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.

0 голосов
/ 14 марта 2011

мы обычно читаем 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.

...