我在 Android 中使用 opencv 编程有一段时间了,现在我发现 Gimp 库要强大得多。我在哪里可以找到学习 Gimp 的起点?我也想知道 Gimp 插件背后的基本概念。过去,我在 opencv 中使用 C API。我怎样才能为android编写代码?另外,我需要在 Windows 中安装哪些软件包才能开始使用 Gimp?
2 回答
虽然 GIMP dows 有一些独立的库来执行一些图像处理,但大多数图像处理是由 GIMP 的核心程序或通过 GIMP 的插件完成的。这两种方法都需要安装并运行整个程序(尽管不一定要在显示器中使用)。
我对 Andorid 编程一无所知,也不知道如何在 C 中安装普通的本机代码并从 Android 应用程序中调用它——如果你非常熟悉它,你可能会有机会尝试一下。
然而,GIMP 本身依赖于一个广泛的库生态系统,包括但不限于 glib、gtk+、cairo、pango、gegl——而这些库中的每一个又可能具有其他先决条件。由于 Windows 没有工作包管理器来自动安装这些各种库的库和头文件,因此在 Windows 上本地使用这些库,虽然它们每个的代码都是多平台的并且可以在 Windows 和其他操作系统上运行,但非常困难。太难了,那些为 Windows 自己构建 GIMP 的人在 Linux 环境中这样做,他们从那里交叉编译 GIMP for Windows。
如果您使用围绕 Android 的 Linux 内核的 GNU 生态系统,而不仅仅是裸露的 Android 环境,那么让所有这些库在 Android 上运行可能并不难(我对 android 的了解还不够,甚至不知道这是否可能) .
总而言之:它会适合你,并且需要大量的研究。
GIMP 的库之一,GEGL(通用图形库)的先决条件要少得多,可以用作普通库。我认为您可以仅使用 glib 和 Babl 作为先决条件来构建它。这个库将取代 current 的 GIMP 核心,并重新实现大多数现有插件的操作——所以它可能对你来说已经足够了。
如果您可以从 Android 系统中运行并使用 GEGL,与世界分享它——在 itelsef 中,它会是一个相当于 Google Summer of Code 项目的项目。(并且仍然比将 GIMP 代码用作其他应用程序的库要容易一个数量级)。
最后——如果你只想要几个 GIMP 的效果,如果效果是在 GIMP 中作为插件实现的,插件的代码非常简单。因此,虽然很难在 Android 中获得整个 GIMP 环境,但从 GIMP 的源代码树中复制实际执行像素操作的函数并将它们转换为在您的应用程序内的 java 方法中工作并不难。请记住在这种情况下遵守许可证:GIMP 的插件代码在 GPLv3 下。(GEGL 库只有 LGPL)
简而言之:不,您不能将 GIMP 的“库”用作 Android 应用程序的本机代码 - 如果您可以使用 OpenCV,那么您很有可能可以使用 GEGL。只有调整某些插件的算法来操作应用程序中的像素会更容易。
但是——如果您的应用程序允许将图像处理委托给基于 Internet 的服务器,那么设置一个 HTTP 应用程序来接收图像、使用 GIMP 处理它并将其流回将是一件简单的事情。
(因此,您不能实时应用效果,但可以允许例如拍照,从菜单中选择一系列效果,然后将其发送到服务器进行处理)
GIMP 在加载画笔时会占用大量内存。如果您删除所有无用的插件,并从源代码构建它。您也许可以让它工作,但您必须将所有链接库直接构建到可执行文件中。
换句话说; 将链接库作为静态构建直接构建到代码中。以这种方式,除非其中一个链接库调用另一个链接库,否则事情可能会正常运行。
让库本身在操作系统上运行可能会提供额外的程序使用它们的机会。另外,GTK+(GIMP Tool Kit),GIMP的界面也比较臃肿丑陋。
如果所有其他方法都失败了,您只需要满足于一个较小的程序,它具有您正在寻找的功能(级别、曲线、克隆工具、减淡和刻录等)。图层也不错,但编辑一个大的百万像素图像开始很快耗尽内存,大多数安卓设备没有交换分区。