0

我需要对 android 中的位图进行一些操作,例如改变像素颜色、透明度、在第一个位图上用透明度绘制另一个位图、缩放、裁剪、应用蒙版等。现在我用java做,它真的很慢。在 nexus 4 上计算 600x600 像素的图像大约需要 5 秒。

什么技术适合这种操作?

我尝试了使用 OpenGL ES 2.0 的库 GPUImage,但是在尝试将蒙版应用于图像时遇到问题,蒙版大小为 600x600 作为原始图像,所以我应该传递一个 1440000 个颜色值的数组,而 GLSL 语言没有支持这么大的数组。360000 的 vec4 值也太大了。可能我可以将整个图像作为 texture2d 对象传递,但我找不到该怎么做。冷的人请给我一个教程?

第二个选项是渲染脚本。它不太适合,因为我希望 android 2.3 的手机具有快速的位图操作,但总而言之,在 3.0+ 设备上提高速度将是一件好事。它的问题是如何传递第二个位图的数据 - 360000 个 float4 值或位图本身。我也找不到有关它的信息,所以如果有人给我建议或教程,我将不胜感激。

第三种选择是使用 NDK。但我不知道它是否足够快,并且再次无法找到好的信息来从一般的 ndk 开始,特别是用 ndk 进行图像处理。所以我再次需要一个建议或教程。

所以,总而言之,请告诉我还有哪些其他的快速图像处理方法,并请给我一些关于这三种方法的建议或教程。什么是真正快速地对图像进行操作的最佳方法?

4

1 回答 1

2

如果您发现 GLES 合适,请将图像分成小图块,并一次对一个图块进行操作。(一些驱动程序以这种方式工作。)

于 2013-03-19T00:36:03.433 回答