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