C# Bitmap类型与Byte[]类型相互转化
生活随笔
收集整理的這篇文章主要介紹了
C# Bitmap类型与Byte[]类型相互转化
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
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(); 這兩句都可以,至于區(qū)別么,下面有解釋
ms.Close();
???????? return?? this._buffer;
?}
下面是ToArray的實現(xiàn)方法:
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的方式轉(zhuǎn)換字節(jié)的話,在轉(zhuǎn)換到字節(jié)的時候?qū)G失數(shù)據(jù);
2、MemoryStream的GetBuffer并不是得到這個流所存儲的內(nèi)容,而是返回這個流的基礎(chǔ)字節(jié)數(shù)組,可能包括在擴充的時候一些沒有使用到的字節(jié)。
下面是GetBuffer的部分實現(xiàn)方法,也許看了這個會更明白: public?? byte[]?? GetBuffer()?? {???????? return?? this._buffer;
?}
下面是ToArray的實現(xiàn)方法:
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
總結(jié)
以上是生活随笔為你收集整理的C# Bitmap类型与Byte[]类型相互转化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 芝麻信用分什么时候更新 教你一些提高的
- 下一篇: C# Task的简单使用