【问题标题】:Is it possible to use GIMP's image capabilities from an Android application?是否可以在 Android 应用程序中使用 GIMP 的图像功能?
【发布时间】:2011-05-05 02:22:43
【问题描述】:

我在 Android 中使用 opencv 编程有一段时间了,现在我发现 Gimp 库要强大​​得多。我在哪里可以找到学习 Gimp 的起点? 我也想知道 Gimp 插件背后的基本概念。过去,我在 opencv 中使用 C API。我怎样才能为android编写代码? 另外,我需要在 Windows 中安装哪些软件包才能开始使用 Gimp?

【问题讨论】:

    标签: android gimp gegl


    【解决方案1】:

    虽然 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 处理图像并将其流回将是一件简单的事情。

    (因此,您不能实时应用效果,但可以允许例如拍照,从菜单中选择一系列效果,然后将其发送到服务器进行处理)

    【讨论】:

    • 对于 OpenCV,我使用 JNI 调用本机代码并在 Android 中使用它。难道不能对 GIMP 做同样的事情吗?我知道像 PicSay 和 FotoFunia 这样的应用程序使用 GIMP 库。从您的回答中,我可以看出 GEGL 是一个不错的选择。我需要在 windows 中的哪个环境来运行 GEGL 库?
    • 我对 GEGL 的了解是它支持非破坏性图像处理。我可以制作像sobel这样的简单图像效果吗?是否可以在 GEGL 中使用操作图像层? bcos 这是从 OpenCV 改变的重点,因为我无法在 OpenCV 中制作透明层。
    • 有趣..如果在 andorid 中有使用 GIMP 库的应用程序,那么可能是直接的 Linxu 构建。要在 Windows 中使用任何 GIMP 库,包括 GEGL,您只需要安装应用程序(使用 GIMP Windows 安装程序)并从源代码 tar 球中获取 .h 文件以包含在您的应用程序中。
    • 至于 GEGL 中的使用层——这就是 GEGL 的全部意义——它与我们在图像程序中看到的“层”有点不同,但是 GEGL 文档(在 www.gegl .org) 非常清楚它是如何工作的。
    • @jsbueno,非常感谢...我需要一些时间来实现所有这些并开始制作简单的程序。我将继续在此线程中报告结果。
    【解决方案2】:

    GIMP 在加载画笔时会占用大量内存。如果您删除所有无用的插件,并从源代码构建它。您也许可以让它工作,但您必须将所有链接库直接构建到可执行文件中。

    换句话说;将链接库作为静态构建直接构建到代码中。通过这种方式,除非其中一个链接库调用另一个链接库,否则事情可能会正常运行。

    让库本身在操作系统上运行可能会为其他程序提供使用它们的机会。另外,GTK+(GIMP Tool Kit),GIMP的界面也比较臃肿丑陋。

    如果所有其他方法都失败了,您只需满足于一个较小的程序,该程序具有您正在寻找的功能(级别、曲线、克隆工具、减淡和刻录等)图层也不错,但是编辑一个百万像素的大图像会很快耗尽内存,而且大多数安卓设备都没有交换分区。

    【讨论】:

      猜你喜欢
      • 2019-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-07
      相关资源
      最近更新 更多