В настоящее время я ищу альтернативу Java Advanced Imaging API с открытым исходным кодом. Мне нужен плагин для javax.imageio
пакета, и мне нужны функции, которые были бы в JAI. По крайней мере, мне нужно иметь возможность читать и записывать файлы в .tiff
формате изображения. Было бы неплохо иметь возможности и в других форматах, таких как .svg
формат или даже форматы .psd
и ..icns
Я не в восторге от JAI, так как это проприетарная часть работы, и я пытаюсь сделать свое приложение открытым исходным кодом. Он также не обновляется, и с ним связано много ошибок.
Он также должен иметь разрешительную лицензию или лицензию, не содержащую положения об авторском левом, что делает что-то вроде GPL. В идеале он должен иметь лицензии Apache или MIT.
Раскрытие информации: я являюсь основным автором/сопровождающим предложенной библиотеки, но, похоже, она очень хорошо соответствует тому, что задает вопрос.
Этот проект содержит большую коллекцию подключаемых модулей и расширений для Java ImageIO ( javax.imageio
пакет), и все они написаны на Java (нет необходимости в собственных сборках или установках).
Эти подключаемые модули расширяют число форматов файлов изображений, поддерживаемых в Java, с помощью пакета javax.imageio.*. Основная цель этого проекта — обеспечить поддержку форматов, не поддерживаемых самой JRE.
В частности, у него есть плагин TIFF с поддержкой чтения и записи. Одна из целей плагина TIFF — стать прямой заменой плагина JAI TIFF. Это означает, что он поддерживает большинство тех же параметров чтения и записи и использует тот же собственный формат метаданных. Это должно сделать миграцию с JAI особенно простой. Он также поддерживает различные варианты TIFF, которых нет в версии JAI.
Проект имеет поддержку форматов ICNS и PSD, а с помощью сторонней библиотеки Batik даже обеспечивает поддержку формата SVG через javax.imageio
API. Проект имеет дополнительную поддержку чтения для нескольких других форматов, таких как PNM, PICT, SGI, TGA и WebP.
Наконец, проект распространяется под очень дружественной лицензией с открытым исходным кодом в стиле BSD, что позволяет использовать его как в продуктах с открытым исходным кодом, так и в коммерческих продуктах.
Пытаясь найти хорошие библиотеки изображений, я нашел несколько довольно старых потоков и придумал несколько претендентов, которые, кажется, продолжают жить и имеют разные сильные стороны:
OpenIMAJ — отмеченный наградами набор библиотек и инструментов для анализа мультимедийного контента и создания контента. OpenIMAJ очень широк и включает в себя все, от современного компьютерного зрения (например, дескрипторы SIFT, обнаружение выступающих областей, обнаружение лиц и т. д.) и расширенную кластеризацию данных, до программного обеспечения, которое выполняет анализ содержимого, макета и структуры. веб-страниц.
... Библиотека доступна в виде модульного набора JAR-файлов, а исходный код находится в свободном доступе под лицензией в стиле BSD. Если вы используете OpenIMAJ для академической работы, мы будем признательны, если вы дадите ссылку на нас. Чтобы быстро начать работу с OpenIMAJ, мы рекомендуем вам ознакомиться с учебным пособием. Для получения дополнительной информации об установке исходного кода, интеграции jar-файлов с вашим проектом Java или использовании инструментов командной строки обратитесь к меню документации выше. В блоге показаны некоторые интересные примеры того, что мы делали с OpenIMAJ и ImageTerrier.
Преимущества: у него есть лицензия, которую можно использовать и в коммерческих целях, и он написан непосредственно на java. Однако похоже, что документация несколько запутана, и я не мог найти, какие форматы изображений она поддерживает или нет. Но, возможно, вам повезет больше, если вы найдете нужные вам функции и требования.
Об части изображения библиотеки:
Класс javaxt.io.Image предназначен для упрощения чтения, записи и управления файлами изображений. Вот несколько простых примеров того, как открывать, поворачивать, обрезать, изменять размер и сохранять файлы изображений. Пожалуйста, обратитесь к JavaDocs для получения полного списка методов.
По вопросу лицензии:
JavaXT — это проект с открытым исходным кодом, выпущенный под лицензией MIT. Не стесняйтесь использовать код и информацию, найденную здесь, по своему усмотрению. Это программное обеспечение поставляется без каких-либо гарантий или гарантий. Вы можете использовать это программное обеспечение в любом открытом или коммерческом проекте.
Это, пожалуй, самая многообещающая библиотека, но она работает не только с изображениями. Не уверен, можете ли вы просто установить его часть изображения или нет.
Что касается самой библиотеки:
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, похоже, есть, но вы можете и многое другое.
незабываемыйidSupportsMonica
Зизуз212