在Android上将int数组转换为Bitmap
我有一个代表颜色的 MxN 整数数组(例如 RGBA 格式,但这很容易更改)。我想将它们转换为 MxN 位图或其他可以渲染到屏幕的东西(例如 OpenGL 纹理)。有没有快速的方法来做到这一点?循环遍历数组并将它们绘制到画布上太慢了。
I have an MxN array of ints representing colors (say RGBA format, but that is easily changeable). I would like to convert them to an MxN Bitmap or something else (such as an OpenGL texture) that I can render to the screen. Is there a fast way to do this? Looping through the array and drawing them to the canvas is far too slow.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
试试这个,它会给你位图:
或者你可以从以下本机方法生成
IntBuffer
:Try this, it will give you the bitmap:
Or you can generate
IntBuffer
from the following native method:为什么不使用 Bitmap.setPixel?它甚至是 API 级别 1:
您可以根据需要使用 offset/stride/x/y。
没有循环。没有额外的分配。
Why not use Bitmap.setPixel? It's even API level 1:
You can play with offset/stride/x/y as needed.
No loops. No additional allocations.
是的,听起来您已经拥有所需的所有信息。如果 M 是宽度,N 是高度,则可以使用 Bitmap.createBitmap 创建一个新位图,并且可以使用采用 int 数组的 setPixels 方法填充 ARGB 值。
位图.createBitmap
Bitmap.setPixels
Yeah, sounds like you have all the info you need. If M is the width and N is the height, you can create a new bitmap with Bitmap.createBitmap, and you can fill in the ARGB values with the setPixels method which takes an int array.
Bitmap.createBitmap
Bitmap.setPixels