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