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();

byte[]    =>   Bitmap

byte[]   bytelist=bytes;
MemoryStream ms1 = new MemoryStream(bytelist);
Bitmap bm = (Bitmap)Image.FromStream(ms1);
ms1.Close();

1、因为如果不用Bmp的方式转换字节的话,在转换到字节的时候将会丢失数据;

2、MemoryStream的GetBuffer并不是得到这个流所存储的内容,而是返回这个流的基础字节数组,可能包括在扩充的时候一些没有使用到的字节。

 

如果用了MemoryStream,就不能说效果差不多。因为我用java重新开发了MemoryStream这个类,所以象这样的并且应该注意的问题基本上都很清楚,其中GetBuffer就是,有很多人认为用这个方法就是得到写入MemoryStream的字节,其实不是这样的。因为MemoryStream是用byte[]来存储数据,在写入数据的时候就有个扩充的过程,也就是说这个流的长度并不是它的byte[]字段的长度。而GetBuffer返回的就是byte[]这个字段。

下面是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[]类型相互转化的更多相关文章

  1. java里int类型转byte类型

    今天在做书上的一个例子的时候, 要使用byte类型,首先我很直接的就写到了byte b = 0XAA, 结果报错, 说从int转换到byte可能会有损失. 我当时就很奇怪, 为什么会出现这种情况呢? ...

  2. Java类型相互转换byte[]类型,blob类型

    在我们的程序开发当中,经常会用到java.sql.Blob.byte[].InputStream之间的相互转换,但在JDK的API当中,又没有直接给我们提供可用的API,下面的程序片段主要就是实现它们 ...

  3. C#byte类型

    byte类型的范围是0~255转换为二进制是00000000~11111111 ---------------------------------------------------------- C ...

  4. C# 读取 timestamp 时间戳 值为byte[] 类型时转换为时间戳字符串

    C# 中如何读取出来的时间戳为 byte[] 类型的话,用以下方式转换成 16进制字符串 string tmpUfts = "0x"+ BitConverter.ToString( ...

  5. int类型和byte类型的强制类型转换

    今天在读<Java网络编程>这本书的第二章 流 时,看到书中有一个地方关于int强制转换为byte类型时应注意的地方.这个地方有点细节,不过就应该把这种细节把握住. 情况是这样的,讲到In ...

  6. int类型被强制转换成较低精度的byte类型

    公司的项目上线之前会进行代码合规性检查,其中很容易违反的一个规则就是“不要把原始类型转换成较低的精度”,实际开发的过程中,很多方法在处理数据时,尤其在做移位操作的时候,难免要把int类型转换成byte ...

  7. C++开发中BYTE类型数组转为对应的字符串

    下午密码键盘返回了一个校验码,是BYTE类型数组,给上层应用返回最好是字符串方式,怎样原样的将BYTE数组转为string串呢?不多说,开动脑筋上手干!!! BYTE格式的数组bt{08,D7,B4, ...

  8. 详解java中的byte类型

    Java也提供了一个byte数据类型,并且是基本类型.java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signed byte.下面这篇文章主要给大家介绍了关于j ...

  9. go语言byte类型报错cannot use "c" (type string) as type byte in assignment

    练习Go修改字符串的时候遇到这个问题:cannot use "c" (type string) as type byte in assignment,代码如下: package m ...

随机推荐

  1. SQL Server 扩展一个支持类似。net 时间格式化的标量函数~

    * FROM sys.objects WHERE name=N'uF_DateFormat' AND [type]='FN') DROP FUNCTION uF_DateFormat GO SET A ...

  2. android中如何发送及接收数据(两种方法)?

    1.如在MainActivity.java中的按钮点击时设置: //发送数据方法1--简单型 i.putExtra("txt", "没错,我就是刚传来的信息!" ...

  3. 管理权限<八>

    权限:如果用户要访问其它方案的对象,则必须为其授予对象的权限.为权限  权限 权限是指执行特定类型 sql 命令或是访问其它方案对象的权利,包括系统权限和对象权限两种. 系统权限  系统权限介绍 ...

  4. FreeBSD_11-系统管理——{Part_6 - SYSCTL}

    sysctl 常见参数 Name Type Changeable 示例 & 示意 kern.ostype string no FreeBSD kern.osrelease string no ...

  5. maven 配置篇 之pom

    maven 配置篇 之pom.xml(一) 博客分类:  pm mavenXML配置管理项目管理junit      说完了settings.xml配置,下来说一下maven2的主要配置pom.xml ...

  6. 正则表达式匹配完整img标签php实现

    处理html富文本的时候,碰到批量处理img标签,要把img标签格式化,并且去除不用的代码,class,各种data-等,首先想到使用正则匹配,然后处理匹配到的img标签和参数,经过一番尝试终于搞定了 ...

  7. 【09_242】Valid Anagram

    Valid Anagram My Submissions Question Total Accepted: 43694 Total Submissions: 111615 Difficulty: Ea ...

  8. VS20xx IDE开发应用时_拷贝VS环境的库文件DLL到目标设备上运行的操作步骤

    问题场景: 当用VSIDE开发完一个项目,在部署到目标环境中时,配置文件OK,但是报错需要调试 <1>Deploying Visual C++ library DLLs as shared ...

  9. 20145301&20145321&20145335实验一

    这次实验我的组员为:20145301赵嘉鑫.20145321曾子誉.20145335郝昊 实验内容详见:实验一报告

  10. postgresql 配置文件优化

    postgresql 配置文件优化 配置文件 默认的配置配置文件是保存在/etc/postgresql/VERSION/main目录下的postgresql.conf文件 如果想查看参数修改是否生效, ...