JAI и ImageIO для 64-битной Windows - PullRequest
19 голосов
/ 06 марта 2011

Я искал в библиотеке JAI и ImageIO 64-битные окна, но я не нашел ни одной из версий.Последний 64-битный запрос win vesion в системе отслеживания ошибок Java 6-7 лет назад.

Думаю, разработчики jai не выпустят ни одной версии для win64.: (

У меня вопрос, можем ли мы собрать jai и imageio из их источника для 64-битных окон, это возможно? Как?

спасибо большое ...

Ответы [ 3 ]

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

JAI и JAI Image I / O состоят из двух частей с точки зрения исходного языка: Java и C / C ++. Java-часть является бесплатной (как бесплатное пиво), и вы можете скачать и скомпилировать ее с java.net, но это исходный код Java, независимо от архитектуры (x86, x64).

Исходный код C / C ++ не выпускается SUN, поэтому вы получаете только скомпилированный .dll для Win32 и других платформ. Этот исходный код не выпущен по нескольким причинам, одна из которых - SUN использует исходный код третьих лиц и имеет право использовать его, а не (свободно) распространять.

Мы связались с SUN три года назад, чтобы сообщить о нескольких ошибках, присутствующих в 12-битном кодеке JAI Image I / O JPEG, и они предоставляют некоторые возможности. Если эти ошибки актуальны для нас, мы можем предоставить программистам на C / C ++ их решение, предоставив SUN исходный код codecLib, если мы подпишем соглашение о неразглашении (NDA). Другой вариант - ждать, пока SUN решит проблемы. Мы оказываем помощь инженеру SUN, назначенному на ошибки, и он решил менее чем за неделю.

Теперь ситуация, похоже, иная, поскольку JAI и связанные с ним проекты (Image I / O), похоже, больше не активны, т.е. над ними никто не работает (новые выпуски, исправления ошибок).

Так что в конечном итоге у вас будет много проблем с JAI, если вам потребуются новые версии.

Вы можете использовать 32-битную JRE для запуска программ, использующих JAI в 64-битных ОС, таких как Windows 7 x64.

К сожалению, вы не можете использовать JAI или Image I / O в 64-битной JRE, поскольку вы можете использовать только функциональные возможности, доступные в чистой Java, и потеряли большинство кодеков в Image I / O.

Другой вопрос, что вам действительно нужно от JAI. JAI можно использовать с использованием 100% чистой реализации Java (версия программного обеспечения), медленнее, но решает проблемы x64. JAI Image I / O также имеет некоторые функциональные возможности, которые могут быть реализованы на 100% чистой Java, но большинству из них, например кодекам, требуется собственный dll, такой как codedLib.

2 голосов
/ 29 января 2014

Пытался проверить производительность 32-битной Java с ее родной библиотекой DLL MediaLib для Windows на Windows 7. Он показывает, что он немного медленнее (5-10%), чем 64-битный чистый Java-код.

Я тестировал JAI с медианной фильтрацией для довольно большого 1-битного ч / б изображения (размер 9000 x 2500 пикселей).Медианный фильтр 7 x 7 требует 17 секунд для процессов с 32-битными собственными библиотеками Windows (DLL) и 15 секунд для чистой 64-битной Java без DLL.Тест был повторен 3-4 раза с очень похожими результатами синхронизации.

Отладочный вывод для 32-битной Java + собственная MediaLib:

Raster path is "F:\Projects\Fadeev\listv.bmp"
Median size value set to 7
Output file will be saved to input directory
Data color set to default value java.awt.Color[r=255,g=0,b=0] (RED)
Color distance set to default value 20,00
New color set to default value java.awt.Color[r=255,g=0,b=0] (RED)
Image ( 9000 x 2461 ) read in 00:00:00.038
Image color quantized at 00:00:01.400
**Image filtered by () at 00:00:17.531** (MediaLib works now and here!!!)
Image stored at 00:00:00.356 (storing in PNG!)
Total time is 00:00:19.325

Отладочный вывод для 64-битной чистой Java:

Raster path is "F:\Projects\Fadeev\listv.bmp"
Median size value set to 7
Output file will be saved to input directory
Data color set to default value java.awt.Color[r=255,g=0,b=0] (RED)
Color distance set to default value 20,00
New color set to default value java.awt.Color[r=255,g=0,b=0] (RED)
Image ( 9000 x 2461 ) read in 00:00:00.038
Image color quantized at 00:00:00.910
Error: Could not load mediaLib accelerator wrapper classes. Continuing in pure Java mode.
Occurs in: com.sun.media.jai.mlib.MediaLibAccessor   com.sun.media.jai.mlib.MediaLibLoadException
**Image filtered by () at 00:00:13.802**
Image stored at 00:00:00.414
Total time is 00:00:15.164
0 голосов
/ 11 марта 2011

Извините, но в репозитории jai / imageio нет никакого кода для win64.

http://java.net/projects/jai-core/sources/svn/show/trunk/src/share/mediaLib

http://java.net/projects/jai-imageio-core/sources/svn/show/trunk/src/share/jclib4jai

Но в системе отслеживания ошибок jai / imageio существуют проблемы.

http://java.net/jira/browse/JAI_IMAGEIO_CORE-62

Извините за это.

...