C# Bitmap类型与Byte[]类型相互转化
生活随笔
收集整理的這篇文章主要介紹了
C# Bitmap类型与Byte[]类型相互转化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Bitmap ? => ? byte[]? Bitmap b = new Bitmap( "test.bmp "); MemoryStream ms = new MemoryStream(); b.Save(ms,System.Drawing.Imaging.ImageFormat.Bmp); byte[] bytes= ms.GetBuffer(); //byte[] bytes= ms.ToArray(); 這兩句都可以,至于區別么,下面有解釋
ms.Close();
???????? return?? this._buffer;
?}
下面是ToArray的實現方法:
public?? byte[]?? ToArray()?? {
???????? byte[]?? bs?? =?? new?? byte[this._length?? -?? this._origin];
???????? for?? (int?? i?? =?? this._origin,?? j?? =?? 0;?? i?? <?? this._length;?? i++)
???????????????? bs[j++]?? =?? this._buffer[i];
???????? return?? bs;
?}
byte[]?? ?=> ??Bitmap
byte[] bytelist=bytes; MemoryStream ms1 = new MemoryStream(bytelist); Bitmap bm = (Bitmap)Image.FromStream(ms1); ms1.Close();1、因為如果不用Bmp的方式轉換字節的話,在轉換到字節的時候將會丟失數據;
2、MemoryStream的GetBuffer并不是得到這個流所存儲的內容,而是返回這個流的基礎字節數組,可能包括在擴充的時候一些沒有使用到的字節。
下面是GetBuffer的部分實現方法,也許看了這個會更明白: public?? byte[]?? GetBuffer()?? {???????? return?? this._buffer;
?}
下面是ToArray的實現方法:
public?? byte[]?? ToArray()?? {
???????? byte[]?? bs?? =?? new?? byte[this._length?? -?? this._origin];
???????? for?? (int?? i?? =?? this._origin,?? j?? =?? 0;?? i?? <?? this._length;?? i++)
???????????????? bs[j++]?? =?? this._buffer[i];
???????? return?? bs;
?}
出處:http://blog.csdn.net/tigertianx/article/details/7098490
總結
以上是生活随笔為你收集整理的C# Bitmap类型与Byte[]类型相互转化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 芝麻信用分什么时候更新 教你一些提高的
- 下一篇: 花呗多久催款 可能会导致这些后果