Можно ли использовать возможности изображений GIMP из приложения Android? - PullRequest
1 голос
/ 05 мая 2011

Я некоторое время использовал opencv для программирования на Android, и теперь я вижу, что библиотека Gimp намного сильнее. Где я могу найти отправную точку для изучения Gimp? Я также хочу знать основные концепции плагинов Gimp. В прошлом я использовал C API в opencv. Как я мог написать код для Android? Кроме того, какие пакеты мне нужно установить в Windows, чтобы начать использовать Gimp?

Ответы [ 2 ]

2 голосов
/ 05 мая 2011

AL Хотя у GIMP есть несколько автономных библиотек, которые выполняют некоторые манипуляции с изображениями, большинство манипуляций с изображениями выполняется либо базовой программой GIMP, либо через плагины GIMP.Для обоих подходов необходимо, чтобы вся программа была установлена ​​и запущена (хотя и не обязательно с использованием дисплея).

Я ничего не знаю о программировании Andorid и не знаю, как можно установить обычный нативный код на C и вызвать егоиз приложений Android - если вы хорошо знакомы с ним, у вас может быть шанс в вашей попытке.

Однако сам GIMP опирается на обширную экосистему библиотек, включая, но не ограничиваясь, glib, gtk +, cairo, pango, gegl - и у каждой из них, в свою очередь, могут быть другие предварительные условия.Поскольку в Windows нет работающего менеджера пакетов для автоматической установки библиотек и заголовочных файлов этих различных библиотек, работа с ними изначально в Windows, хотя код каждой из них является многоплатформенным и может работать в Windows и других ОС, составляет очень тяжело .Настолько тяжело, что люди, которые сами создают GIMP для Windows, делают это в среде Linux, откуда они кросс-компилируют GIMP для Windows.

Заставить все эти библиотеки работать на Android, вероятно, не сложно, если вы используете экосистему GNU вокруг ядра Linux на Android, а не только чистую среду Android (я не знаю достаточно об Android, чтобы дажезнать, если это возможно).

В общем и целом: это будет для вас и потребует много исследований.

Одна из библиотек GIMP, GEGL (Generic Graphics Library), имеет гораздо меньше предпосылок, иможно использовать как обычную библиотеку.Я думаю, что вы, вероятно, можете построить его только с glib и Babl в качестве предварительных условий.Это библиотека, которая заменит текущее ядро ​​GIMP и переопределит операции большинства существующих плагинов - так что этого может быть достаточно для вас.
Если вы можете запустить и использовать GEGL из системы Android, поделитесь ею сМир - это будет, по сути, проект стоимостью проекта Google Summer of Code.(И все же было бы примерно на порядок проще, чем вводить код GIMP для использования в качестве библиотеки из других приложений).

Наконец - если вам нужна пара эффектов GIMP, если эффектреализован как плагин в GIMP, код плагинов довольно прост.Таким образом, хотя было бы трудно получить всю среду GIMP внутри Android, скопировать функции, которые фактически выполняют манипуляции с пикселями из исходного дерева GIMP, и преобразовать их для работы в java-методе внутри вашего приложения не составит труда.Только не забывайте соблюдать лицензию в этом случае: код плагинов GIMP находится под GPLv3.(библиотека GEGL только LGPL)

Короче говоря : нет, вы не можете использовать «библиотеки» GIMP в качестве нативного кода из приложения Android - если вы можете использовать OpenCV, у вас естьхороший шанс использовать вместо этого GEGL.Было бы проще использовать только алгоритмы определенных плагинов для манипулирования пикселями в вашем приложении.

Однако - если ваше приложение позволит делегировать обработку изображений на интернет-сервер, настройте приложение HTTP для получения изображения,использовать GIMP для его обработки и потоковой передачи обратно было бы просто.

(Таким образом, вы не могли бы применять эффекты в реальном времени, но позволили бы, например, сделать фотографию, выбратьсерия эффектов из меню и отправка их на сервер для обработки)

1 голос
/ 11 июня 2012

GIMP использует довольно много памяти при загрузке кистей.Если вы отбросите все бесполезные плагины и соберете их из исходного кода.Возможно, вы сможете заставить его работать, но вам придется встроить ВСЕ связанные библиотеки непосредственно в исполняемый файл.

Другими словами;встраивать связанные библиотеки непосредственно в код в виде статической сборки.Таким образом, все может функционировать должным образом, если только одна из этих связанных библиотек не вызовет другую связанную библиотеку.

Приведение самих библиотек для работы в ОС может предоставить дополнительные возможности программ для их использования.Кроме того, GTK + (GIMP Tool Kit), интерфейс GIMP также довольно раздутый и уродливый.

Если все остальное не поможет, вам просто придется согласиться на небольшую программу с функциями, которые вы ищете наfly (уровни, кривые, инструмент клонирования, уклонение и прожиг и т. д.) Слои также хороши, но редактирование большого мегапиксельного изображения начинает довольно быстро поглощать память, и на большинстве устройств Android нет раздела подкачки.

...