在Android上将int数组转换为Bitmap

我有一个代表颜色(如RGBA格式,但很容易改变)的MxN数组。 我想将它们转换成一个MxN位图或其他东西(比如一个OpenGL纹理),我可以渲染到屏幕上。 有没有一个快速的方法来做到这一点? 循环访问数组并绘制到canvas上太慢了。

试试这个会给你的位图。

// You are using RGBA that's why Config is ARGB.8888 bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); // vector is your int[] of ARGB bitmap.copyPixelsFromBuffer(IntBuffer.wrap(vector)); 

编辑:

  //OR , you can generate IntBuffer from following native method /*private IntBuffer makeBuffer(int[] src, int n) { IntBuffer dst = IntBuffer.allocate(n*n); for (int i = 0; i < n; i++) { dst.put(src); } dst.rewind(); return dst; }*/ 

希望它会帮助你。

为什么不使用Bitmap.setPixel ? 甚至是API级别1:

 int[] array = your array of pixels here... int width = width of "array"... int height = height of "array"... // Create bitmap Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); // Set the pixels bitmap.setPixels(array, 0, width, 0, 0, width, height); 

您可以根据需要使用偏移/跨度/ x / y。
没有循环。 没有额外的分配。

是的,听起来像你有你需要的所有信息。 如果M是宽度,N是高度,则可以使用Bitmap.createBitmap创build一个新的位图,并且可以使用带有int数组的setPixels方法填充ARGB值。

Bitmap.createBitmap

Bitmap.setPixels