A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 狄琛林 于 2012-9-21 17:54 编辑

在c#.net中,如何将img控件的图片转化为2进制数组?

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

4 个回复

正序浏览
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
里面有具体代码

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
个人习惯用这种方法:
     Stream s=File.OpenRead(imgUrl);
        BinaryReader br=new BinaryReader(s);
        byte[] bt = br.ReadBytes((int)s.Length);

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
//将数据库中的Image类型转换成byte[]
public byte[] SetImage(SqlDataReader reader)
{
           return (byte[])reader["Image"];//Image为数据库中存放Image类型字段
}
回复 使用道具 举报
本帖最后由 林洲 于 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];
复制代码

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马