Bitmap Byte[] 互轉


嚴正聲明:
作者: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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM