博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在imge控件中直接显示图片(图片是byte[]格式)
阅读量:4588 次
发布时间:2019-06-09

本文共 1911 字,大约阅读时间需要 6 分钟。

   在工作过程中遇到了这个问题,在网上查了一些资料,结合自己的解决方法及解决过程总结了下,方面以后查阅。如果能帮到同样遇到这个问题的你,将非常高兴哦~_~

   由于asp.net中的Image控件是在System.Web.UI.WebControls命名空间中,所以不能像在winform中那样通过byte[]直接显示图片。 既然这样,就只能曲线救国了。这里的例子是这样的思路:showImage.aspx是最终用来显示文字和图片的页面,但是由于我们的图片需要曲线救国,所以这里另外建立一个pic.aspx。在pic.aspx页面中我们显示图片,而将showImage.aspx中的Image控件的url设为pic.aspx。最终我们完成了要求。

 

showImage.aspx的代码如下

照片:          

 

showImage.aspx.cs的代码如下

private string tid = null;    protected void Page_Load(object sender, EventArgs e)    {        tid = Request.Params["tid"];        this.Image1.ImageUrl = "../show/pic.aspx?tid=" + tid;      }

 

pic.aspx.cs的代码如下:

protected void Page_Load(object sender, EventArgs e)    {        string tid = Request.Params["tid"].ToString();        Response.BinaryWrite(getImage(id));//getImage(id)代表图片的byte[]数据,数据类型是byte[]    }

 

如果是通过调用cgi返回图片数据,需要将结果先转换成byte[],方法是:

string cgi = "http://……………………/img_loader.cgi?img=EF6BF9DD6CBB46E6B0524487B1EE5DBA.jpg";  System.Net.HttpWebRequest webrequest = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(cgi);  System.Net.HttpWebResponse webresponse = (System.Net.HttpWebResponse)webrequest.GetResponse();  byte[] b = null;  using (Stream stream = webresponse.GetResponseStream())  using (MemoryStream ms = new MemoryStream())  {        int count = 0;        do        {        byte[] buf = new byte[1024];        count = stream.Read(buf, 0, 1024);        ms.Write(buf, 0, count);        } while (stream.CanRead && count > 0);        b = ms.ToArray();        }    webresponse.Close();    Response.BinaryWrite(b);

网上很多都是这样处理的,但是会报错,因为不知道网络会传输多少长度的stream过来。

byte[] b=new byte[stream.length];stream.Read(b,0,b.length);stream.Seek(0,SeekOrigin.Begin);

 

如果要用本地一张图片来测试,可以用这种方式来获取图片的byte[]数据:

FileStream files = new FileStream("D:/full.png", FileMode.Open);byte[] imgByte = new byte[files.Length];files.Read(imgByte, 0, imgByte.Length);files.Close();

 

 

转载于:https://www.cnblogs.com/echolxl/p/3468844.html

你可能感兴趣的文章
MyBatis-Plus的简单使用
查看>>
C++学习笔记-标准库类型-Vector类型
查看>>
Oracle 树操作(select…start with…connect by…prior)
查看>>
python中的operator.itemgetter函数
查看>>
h5新特性--- 多媒体元素
查看>>
jQuery实现发送短信验证码后60秒倒计时
查看>>
【CSS】盒模型+选择器(你选择的要操作的对象)
查看>>
EM算法总结
查看>>
centos7开启防火墙和指定端口
查看>>
Android系统对话框——自己定义关闭
查看>>
词法分析器 /c++实现
查看>>
Visual Studio2012 Lua插件--BabeLua
查看>>
SOA两个接口通常用于实现更:SOAP vs REST
查看>>
采用UltraISO制作U菜Win7安装盘,显现"File not find /BOOT/CDMENU.EZB.ezb"错误
查看>>
AfxMessageBox和MessageBox差别
查看>>
循环队列
查看>>
华为路由器配置
查看>>
java多线程(二)-线程的生命周期及线程间通信
查看>>
Scala2.11.8 spark2.3.1 mongodb connector 2.3.0
查看>>
system.exit( )和frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) 的区别
查看>>