Android和Java的image processing库

我目前正在研究一个小型的项目,它将从一个URL加载一个图像,resize,并使用指定的调色板将其颜色深度更改为只有16种颜色。 我的主要问题是,我想要一个程序,我可以在Android设备和台式机上使用。 你知道一个好的image processing库,可以在两个系统上工作吗?

提前致谢。

有几个工具:

这个页面上的答案截止到2014年2月。我正在寻找一个免费的Androidimage processing库 ,我在这里看到了斯坦福大学的讲义: http : //www.stanford.edu/class/ee368/Android/的index.html

进一步调查,我发现他们在课程材料中使用OpenCV 。 它有一个Java接口(以及许多其他语言),但是这个库本身是用C ++编写的。 他们指出:

随着谷歌,雅虎,微软,英特尔,IBM,索尼,本田,丰田等知名公司的应用,许多创业公司如Applied Minds,VideoSurf和Zeitera等都广泛使用OpenCV。

我很高兴(!)find了这个,期待着回家,并给它一个去。

Android NDK允许您使用不需要java.awt或任何Android类的现有C / C ++库。 例如,您可以轻松地将libpng编译为Android的共享库,然后编写一个JNI接口将图像从Java层传递到png库。 同样,您也可以将libpng编译为桌面计算机的共享库,并从那里使用它。

我最近写了一篇关于如何编译Android开源库的教程 。 如果你浏览Android源代码,你会发现一些类通过jni使用skiagraphics库。 我之前没有使用skia,但是由于Android在其基础框架中包含skia,因此在您的应用程序/桌面程序中运行它不应该太困难。

编写跨平台程序已经成为移动开发者社区中一个非常活跃的领域,一些像libgdx这样的引擎已经非常擅长。 所以你试图肯定是可能的。

辛酸,

我不认为有一个库存在你想要的,原因是在非移动平台上,你要在Java中使用的每一个graphics操作都将在一定程度上使用Java2D渲染pipe道。 在Android上,这不存在。

Android为图像操作提供了自己的graphicspipe道,实际上简化了许多标准Java中更复杂的事情。

所有这一切,看起来像你find了一个库(JJIL)作为一个抽象层在这些差异的顶部,在这种情况下,我会有点担心性能,并在自己的代码做一些testing,看看它是如何与平台方法相比执行。 例如,我看到了JJIL的这句话:

允许图像从Android位图转换成JJIL RgbImages

当我查看RgbImages的源代码时 ,看起来图像数据被转换并存储在一个内部数组中; 所有这些抽象层都将耗费CPU时间和内存,尤其是移动设备上的图像由于分辨率更高的摄像头和高带宽连接而变得更大。

这可能不是什么大问题,但是,你可能想要做一些性能分析/testing/性能比较。

任何纯Java库都可以在两个平台上工作。 谷歌search“Javaimage processing库”产生了几个结果。 尝试find最轻的重量库,为您的目的,因为内存和CPU是有限的移动设备。

巴里