Библиотека изображений Java с открытым исходным кодом вместо JAI

В настоящее время я ищу альтернативу Java Advanced Imaging API с открытым исходным кодом. Мне нужен плагин для javax.imageioпакета, и мне нужны функции, которые были бы в JAI. По крайней мере, мне нужно иметь возможность читать и записывать файлы в .tiffформате изображения. Было бы неплохо иметь возможности и в других форматах, таких как .svgформат или даже форматы .psdи ..icns

Я не в восторге от JAI, так как это проприетарная часть работы, и я пытаюсь сделать свое приложение открытым исходным кодом. Он также не обновляется, и с ним связано много ошибок.

Он также должен иметь разрешительную лицензию или лицензию, не содержащую положения об авторском левом, что делает что-то вроде GPL. В идеале он должен иметь лицензии Apache или MIT.

Вам следует отредактировать свой вопрос и преобразовать список требований в нумерованный или маркированный список в порядке важности. Вы также должны сказать, почему вы не хотите использовать JAI.
@unforgettableid Это действительно не имеет значения здесь ... Если я ищу программу с открытым исходным кодом, должно быть совершенно ясно, что я все равно не хочу JAI ...

Ответы (2)

Раскрытие информации: я являюсь основным автором/сопровождающим предложенной библиотеки, но, похоже, она очень хорошо соответствует тому, что задает вопрос.


Двенадцать обезьян ImageIO

Этот проект содержит большую коллекцию подключаемых модулей и расширений для Java ImageIO ( javax.imageioпакет), и все они написаны на Java (нет необходимости в собственных сборках или установках).

Эти подключаемые модули расширяют число форматов файлов изображений, поддерживаемых в Java, с помощью пакета javax.imageio.*. Основная цель этого проекта — обеспечить поддержку форматов, не поддерживаемых самой JRE.

  • В частности, у него есть плагин TIFF с поддержкой чтения и записи. Одна из целей плагина TIFF — стать прямой заменой плагина JAI TIFF. Это означает, что он поддерживает большинство тех же параметров чтения и записи и использует тот же собственный формат метаданных. Это должно сделать миграцию с JAI особенно простой. Он также поддерживает различные варианты TIFF, которых нет в версии JAI.

  • Проект имеет поддержку форматов ICNS и PSD, а с помощью сторонней библиотеки Batik даже обеспечивает поддержку формата SVG через javax.imageioAPI. Проект имеет дополнительную поддержку чтения для нескольких других форматов, таких как PNM, PICT, SGI, TGA и WebP.

  • Наконец, проект распространяется под очень дружественной лицензией с открытым исходным кодом в стиле BSD, что позволяет использовать его как в продуктах с открытым исходным кодом, так и в коммерческих продуктах.

Пытаясь найти хорошие библиотеки изображений, я нашел несколько довольно старых потоков и придумал несколько претендентов, которые, кажется, продолжают жить и имеют разные сильные стороны:

OpenImaj

OpenIMAJ — отмеченный наградами набор библиотек и инструментов для анализа мультимедийного контента и создания контента. OpenIMAJ очень широк и включает в себя все, от современного компьютерного зрения (например, дескрипторы SIFT, обнаружение выступающих областей, обнаружение лиц и т. д.) и расширенную кластеризацию данных, до программного обеспечения, которое выполняет анализ содержимого, макета и структуры. веб-страниц.

... Библиотека доступна в виде модульного набора JAR-файлов, а исходный код находится в свободном доступе под лицензией в стиле BSD. Если вы используете OpenIMAJ для академической работы, мы будем признательны, если вы дадите ссылку на нас. Чтобы быстро начать работу с OpenIMAJ, мы рекомендуем вам ознакомиться с учебным пособием. Для получения дополнительной информации об установке исходного кода, интеграции jar-файлов с вашим проектом Java или использовании инструментов командной строки обратитесь к меню документации выше. В блоге показаны некоторые интересные примеры того, что мы делали с OpenIMAJ и ImageTerrier.

Преимущества: у него есть лицензия, которую можно использовать и в коммерческих целях, и он написан непосредственно на java. Однако похоже, что документация несколько запутана, и я не мог найти, какие форматы изображений она поддерживает или нет. Но, возможно, вам повезет больше, если вы найдете нужные вам функции и требования.

JavaXT.io.Изображение

Об части изображения библиотеки:

Класс javaxt.io.Image предназначен для упрощения чтения, записи и управления файлами изображений. Вот несколько простых примеров того, как открывать, поворачивать, обрезать, изменять размер и сохранять файлы изображений. Пожалуйста, обратитесь к JavaDocs для получения полного списка методов.

По вопросу лицензии:

JavaXT — это проект с открытым исходным кодом, выпущенный под лицензией MIT. Не стесняйтесь использовать код и информацию, найденную здесь, по своему усмотрению. Это программное обеспечение поставляется без каких-либо гарантий или гарантий. Вы можете использовать это программное обеспечение в любом открытом или коммерческом проекте.

Это, пожалуй, самая многообещающая библиотека, но она работает не только с изображениями. Не уверен, можете ли вы просто установить его часть изображения или нет.

FreeImage

Что касается самой библиотеки:

FreeImage — это проект библиотеки с открытым исходным кодом для разработчиков, которые хотели бы поддерживать популярные форматы графических изображений, такие как PNG, BMP, JPEG, TIFF и другие, необходимые современным мультимедийным приложениям. FreeImage прост в использовании, быстр, многопоточен, совместим со всеми 32-битными или 64-битными версиями Windows и кросс-платформен (работает как с Linux, так и с Mac OS X).

Благодаря интерфейсу ANSI C FreeImage можно использовать на многих языках, включая C, C++, VB, C#, Delphi, Java, а также на распространенных языках сценариев, таких как Perl, Python, PHP, TCL или Ruby.

Это не чистая java-библиотека, и вам нужно ее связать. Однако он предоставляет множество функций и форматов файлов, которые вы ищете. Частичный интерфейс, возможно устаревший, можно найти на freeimage4j . Если он не обновлен, он должен/может стать основой для вашего нового интерфейса.


С точки зрения изображения кажется, что FreeImage может быть лучшим выбором, но у вас могут возникнуть трудности с его взаимодействием. В OpenIMAJ может быть то, что вам нужно, но я не смог найти дорогу в документации. JavaXT.io.Image, похоже, есть, но вы можете и многое другое.

Не уверен в этом, но не лучше ли было бы иметь один ответ на рекомендацию, чтобы лучший попал в топ?
@CristianCiupitu, обычно я бы действительно публиковал их как отдельные ответы, но они тесно связаны, фокусируясь на разных аспектах запроса.
Они выглядят великолепно! Они определенно дают вам много!
Спасибо огромное! Я нашел кое-что еще, что я собираюсь опубликовать в качестве ответа, но это определенно было полезно, и я, вероятно, буду использовать его для своего приложения в более поздних выпусках. :D
Что касается OpenIMAJ, я нашел здесь документы API ... кажется, у них есть новый веб-сайт со всей этой информацией здесь .