Android Bitmap 和 ByteArray的互相转换
2017-10-31 20:11
141 查看
Android Bitmap 和 ByteArray的互相转换
移动平台图像处理,需要将图像传给native处理,如何传递?将bitmap转换成一个byte[]方便传递也方便cpp代码直接处理图像内容。
Bitmap -> byte[]
创建一个ByteBuffer用于接收数据。首先需要爲buffer开辟内存空间,内存空间的大小就是图片的大小。将bitmap的数据写入buffer,然后调用buffer的array()方法得到array.
int bytes = bmp.getByteCount(); ByteBuffer buf = ByteBuffer.allocate(bytes); bmp.copyPixelsToBuffer(buf); byte[] byteArray = buf.array();
byte[] -> Bitmap
这个步骤让我花费了更多时间。之前看到有人說可以使用Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapdata, 0, bitmapdata.length);
来根据ByteArray直接得到bitmap,但是我使用中出现问题。想想其实很简单,就这么一行语句,一个bitmap对象必须的参数都没有设置,怎么就可能得到正常的bitmap对象?这个方法生效的前提是,提供的bitmapdata是包含了图像参数的,而非简单的RGBA数据。而我现在得到的仅仅是RGBA数据,所以需要先得到一个bitmap实例,再往里填数据。需要将得到的array再变回buffer,使用buffer的
wrap方法,包装数组得到buffer.
// use Bitmap.Config.ARGB_8888 instead of type is OK Bitmap stitchBmp = Bitmap.createBitmap(width, height, type); stitchBmp.copyPixelsFromBuffer(ByteBuffer.wrap(byteArray)); imageView.setImageBitmap(stitchBmp);
参考资料
How do I convert raw camera data into a Bitmap on Android
How to convert byte array to Bitmap
相关文章推荐
- Android Bitmap 和 ByteArray的互相转换
- android中bitmap和drawable互相转换
- Android 图片压缩、Bitmap 与 字符串互相转换
- BitmapData 与 ByteArray 互相转换
- Android中Bitmap和Drawable互相转换
- Android 将布局文件转成图片(将View 转换成BitMap)
- Android中Drawable和Bitmap的区别及互相转化
- android 中int 和 String 互相转换的多种方法
- Flex中ByteArray与BitmapData互相转换实现图片的二进制保存与复原
- Android Bitmap 与 Drawable之间的区别和转换
- Android读取本地或网络图片并转换为Bitmap
- android 图片处理工具类,Bitmap转换String ,Drawable, byte[],保存,优化等。
- android中Bitmap转换Drawable
- Flex中利用ByteArray与BitmapData互相转换实现图片的二进制保存与复原
- Android把view的画面转换为bitmap
- Android Drawable、Bitmap、byte[]之间的转换
- android 字符串 转换成Bitmap 设置文本的字体: 宋体,隶书啥的,获取字体的 行高, 文字生成图片
- Android Bitmap与DrawAble与byte[]与InputStream之间的转换工具类【转】
- android开发之Bitmap 、byte[] 、 Drawable之间的相互转换
- (转载)BitmapData与ByteArray的转换