如何在android中对位图进行快速操作

时间:2013-03-16 15:53:16

标签: android android-ndk opengl-es-2.0 renderscript

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

哪种技术适合此操作?

我尝试使用OpenGL ES 2.0的库GPUImage,但是在尝试将掩码应用于图像时遇到问题,掩码大小为600x600作为原始图像,因此我应该传递1440000个颜色值的数组,并且GLSL语言不支持这样的大数组。 360000的vec4值也太大了。 可能是我可以将整个图像作为texture2d对象传递,但我无法找到如何做到这一点。有人请给我一个教程吗?

第二个选项是renderscript。它不太适合,因为我想要Android 2.3的手机具有快速位图操作,但总体上提高3.0+设备的速度将是一件好事。它的问题是如何传递第二个位图的数据 - 浮点数值360000或位图本身。我也很难找到有关它的信息,所以如果有人给我一个建议或教程,我会感激不尽。

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

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

1 个答案:

答案 0 :(得分:2)

如果您发现GLES合适,请将图像划分为小图块,并一次在一个图块上操作。 (有些司机以这种方式工作。)