黑马程序员技术交流社区

标题: c#.net中,如何将img控件的图片转化为2进制数组? [打印本页]

作者: 狄琛林    时间: 2012-9-18 10:51
标题: c#.net中,如何将img控件的图片转化为2进制数组?
本帖最后由 狄琛林 于 2012-9-21 17:54 编辑

在c#.net中,如何将img控件的图片转化为2进制数组?
作者: 林洲    时间: 2012-9-18 11:17
本帖最后由 林洲 于 2012-9-18 11:18 编辑

可以通过如下代码,将图片转换为二进制的数组:
  1.                 //创建一个文件流打开图片
  2.                 FileStream fs = File.Open(imgURL, FileMode.Open);//imgURL图片物理地址
  3.                 //声明一个byte[]数组接受图片byte信息
  4.                 byte[] fileBytes = new byte[fs.Length];
复制代码

作者: 许庭洲    时间: 2012-9-18 16:02
//将数据库中的Image类型转换成byte[]
public byte[] SetImage(SqlDataReader reader)
{
           return (byte[])reader["Image"];//Image为数据库中存放Image类型字段
}

作者: 彭张铨    时间: 2012-9-18 17:22
个人习惯用这种方法:
     Stream s=File.OpenRead(imgUrl);
        BinaryReader br=new BinaryReader(s);
        byte[] bt = br.ReadBytes((int)s.Length);
作者: 孔德智    时间: 2012-9-18 17:29
1.用GetDC获取一个窗口或桌面的DC句柄
2.用CreateCompatibleDC创建一个内存DC
3. 用SelectObject(hDC, Image1.Picture.Handle)将image1中的图片选入内存DC中,之前必须用Loadpicture或通过属性窗口向Image1中载入一幅图片
4. 再定义一个三维数组arrBits(0 to 3, lWidth-1, lHeight-1) as byte,这里的lWidth和lHeight是图形的宽和高,以像素为单位,stdPicture的长度单位是Himetric,需要乘以一个常量96 / 2540将其转换为像素
5.然后用GetDIBits将每个像素的RGB颜色值放到数组中
这样就将每个像素的RGB颜色信息放入arrBits数组中了,arrBits(0,x,y)表示从图片左下角算起横向第x,纵向第y个像素的蓝色亮度值,arrBits(1,x,y)和arrBits(2,x,y)则分别代表该点的绿色和红色的亮度,arrBits(3,x,y)为保留字节。
————————————摘自http://club.excelhome.net/thread-400986-1-1.html
里面有具体代码




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2