家资是何物,积帙列梁梠。这篇文章主要讲述在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...
intwidth= width of "array"...
intheight = 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
【在Android上将int数组转换为Bitmap】Bitmap.setPixels
推荐阅读
- 在不同的Android设备上有哪些有效的PixelFormats()
- 你可以检测到向上滑动Android头部通知
- androidTv中的NotificationListenerService
- Android,从“最近的应用”中删除应用时取消通知
- Android(以编程方式向通知添加按钮)
- 自定义android通知背景
- 单击firebase的通知时,在设备的浏览器中打开URL而不直接到App
- 如何在Windows中使用Open ALPR(自动车牌识别)从图像中识别车辆牌照
- 如何使用PHP最小化Javascript和CSS