我们需要为智能手机(主要是iPhone)构建一个图像处理应用程序。这些操作包括:
- 图像过滤
- 复合几何变换
- 区域增长
此外,用户需要指定(触摸)图像的某些部分。这些部分将作为应用程序的输入。例如:脸上的眼睛和嘴唇。 我们已经构建了该应用程序的桌面版本。处理部分相当繁重,我们广泛使用了 BufferedImage 类。
我们应该使用 CodeNameOne 来构建此应用吗?如果没有,那么您建议什么替代方案?
请考虑以下因素:
- 性能
- 易于编写代码(用于图像处理)
最佳答案
我在我们的讨论论坛中对此给出了答案,但我认为对于重复的帖子来说这是一个值得提出的问题:
通常,对于大多数平台,除了 iOS 和 Windows Phone 之外,您的性能应该都不错。
Codename One 针对常见用例进行了优化,因为 iOS 不允许 JIT,所以它永远不可能像桌面上的 Java 一样快,因为它确实很难进行一些优化,例如数组绑定(bind)检查消除。因此,对数组的每次访问都将包含分支检查,这对于图像处理来说可能非常昂贵。
此外,除了基本的 ARGB 之外,我们没有任何图像处理 API,您可以获得“图片”,但它不会高效或容易。
问题是这是一个非常具体的领域,我非常怀疑您是否会找到任何可以帮助您处理此类代码的解决方案。因此,据我所知,您唯一的方法是构建 native 代码来完成实际的图像处理繁重工作。
您可以使用 Codename One 的 NativeInterface
API 来完成此操作,该 API 允许您调用 native 代码中的关键代码并使用 cn1lib
将它们包装为库。然后,您将能够获得该部分代码的 native 性能,但这仅对代码中的关键部分有意义。如果您编写了大量 native 代码,Codename One 的优势就会开始消失,您不妨转向 native 代码。
关于iphone - CodeNameOne 对于图像处理应用程序的适用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12779599/