Q:ASP.NET 点点通:如何利用输出流显示图片
A:下面的代码片断展示了如何使用一个 ASP.NET 页面在客户端的网页中显示一幅图片:
〈% Page Language=”C#” %〉
〈html〉
〈body〉
〈form runat=”server”〉
〈img src=”image.aspx”/〉
〈/form〉
〈/body〉
〈/html〉
上面这段 HTML 代码中的 image.aspx 会首先访问到需要显示的图片的字节,然后将所有读取出的字节串列化到输出流中去。
Protected void Page_Load(object sender, EventArgs e)
{
String fileName = Server.MapPath(@”/images/goodday.jpg”);
Response.ContentType = “image/jpeg”;
Response.WriteFile(fileName);
}
如果您需要对文件流进行某些修改的话,可以显示的读取字节,然后对字节进行所需的修改,再将最终的修改好的字节数组写到输出流当中去。
使用这种方法显然可以在客户浏览器上动态的生成图像,将 〈img〉 标签中的 src 属性设置成一个 .aspx 页面,然后服务器页面生成图像的字节信息,再将字节通过适当的 content type 输出到客户端。但是,这种方法并不是最佳高效的,使用一个简单的 HTTP Handler 就可以完成上面的工作。当然 ASP.NET 页面也是 HTTP Handler,但是它要处理更多的工作。