Можно ли использовать возможности изображений GIMP из приложения Android?
Я некоторое время использовал opencv для программирования на Android. Теперь я вижу, что библиотека GIMP намного сильнее. Итак, где я могу иметь отправную точку для изучения GIMP. Я также хочу знать основную концепцию плагина gimp. В прошлом я использовал C APIs для opencv; Как мне написать код для Android? Кроме того, какие пакеты мне нужно установить в Windows, чтобы начать использовать GIMP?
2 ответа
Несмотря на то, что в GIMP есть несколько автономных библиотек, которые выполняют некоторые манипуляции с изображениями, большинство манипуляций с изображениями выполняется либо основной программой GIMP, либо через плагины GIMP. Для обоих подходов должна быть установлена и запущена вся программа (хотя не обязательно с использованием дисплея).
Я ничего не знаю о том, как работает Андорид, и не знаю, как можно установить обычный нативный код на 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, поделитесь ею с World - это, в самом деле, будет ценным проектом Google Summer of Code. (И все же было бы примерно на порядок проще, чем получать код GIMP для использования в качестве библиотеки из других приложений).
Наконец, если вам нужна пара эффектов GIMP, если эффект реализован в виде плагина в GIMP, код плагинов довольно прост. Таким образом, хотя было бы трудно получить всю среду GIMP внутри Android, скопировать функции, которые фактически выполняют манипуляции с пикселями из исходного дерева GIMP, и преобразовать их для работы в java-методе внутри вашего приложения не составит труда. Просто не забывайте соблюдать лицензию в этом случае: код плагинов GIMP находится под лицензией GPLv3. (библиотека GEGL только LGPL)
Вкратце: нет, вы не можете использовать "библиотеки" GIMP в качестве нативного кода из приложения для Android - если вы можете использовать OpenCV, у вас есть хорошие шансы использовать вместо этого GEGL. Было бы проще использовать только алгоритмы определенных плагинов для манипулирования пикселями в вашем приложении.
Однако - если ваше приложение разрешит делегировать обработку изображений на сервер в Интернете, настроить приложение HTTP для получения изображения, использовать GIMP для его обработки и выполнить потоковую передачу обратно было бы просто.
(Таким образом, вы не можете применять эффекты в режиме реального времени, но вы можете, например, сделать фотографию, выбрать серию эффектов из меню и отправить ее на сервер для обработки)
GIMP использует довольно много памяти при загрузке кистей. Если вы отбросите все бесполезные плагины и соберете их из исходного кода. Возможно, вы сможете заставить его работать, но вам придется встроить ВСЕ связанные библиотеки непосредственно в исполняемый файл.
Другими словами; встраивать связанные библиотеки непосредственно в код в виде статической сборки. Таким образом, все может функционировать должным образом, если одна из этих связанных библиотек не вызывает другую связанную библиотеку.
Приведение библиотек к работе в ОС может предоставить дополнительные возможности программ для их использования. Кроме того, GTK+ (GIMP Tool Kit), интерфейс GIMP также довольно раздутый и уродливый.
Если все остальное терпит неудачу, вам просто нужно согласиться на небольшую программу с функциями, которые вы ищете на лету (уровни, кривые, инструмент клонирования, уклонение и прожиг и т. Д.). Слои также хороши, но редактирование Большое мегапиксельное изображение начинает довольно быстро поглощать память, и на большинстве устройств Android нет раздела подкачки.