嚴正聲明:
作者:psklf
出處: http://www.cnblogs.com/psklf/p/5889978.html
歡迎轉載,但未經作者同意,必須保留此段聲明;必須在文章中給出原文連接;否則必究法律責任!
Bitmap->byte[]
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