在Android上将int数组转换为Bitmap

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Android上将int数组转换为Bitmap相关的知识,希望对你有一定的参考价值。

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

答案

试试这个它会给你位图。

 // 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[i]);
        }
        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);

您可以根据需要使用offset / stride / x / y。 没有循环。没有额外的分配。

另一答案

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

Bitmap.createBitmap

Bitmap.setPixels

以上是关于在Android上将int数组转换为Bitmap的主要内容,如果未能解决你的问题,请参考以下文章

在 Arduino 上将 int 或 String 转换为 char 数组

MFC如何将一个unsigned int数组转换为bitmap?

VB.net 如何将数据转换为位图(Bitmap)所需要的byte()数组?急!!!!

如何在android中把JSON对象转换为string

Android-DrawableBitmapbyte[]资源文件相互转换

使用校准点在地图上将经度和纬度转换为X Y.