ASP.NET 2.0中用Response对象输出图像

本文示例小工程将向你展示如何使用Response对象在ASP.NET 2.0 Web页面中输出直接存储在SQL Server 2005数据库中的图像数据。直接在Web页面上绘制并输出图像数据和事件设计。

一、简介

作为ASP.NET基本对象之一的Response对象不但可以通过Write()方法直接在页面上输出字符串数据,而且还可以使用BinaryWrite()方法直接显示二进制表示的数据,如图像、图片等。

本文示例小工程将向你展示如何使用Response对象在ASP.NET 2.0 Web页面中输出直接存储在SQL Server 2005数据库中的图像数据。

【注意】在本例中,我们没有讨论仅在SQL Server 2005表格中存储图像的URL的情形。因为这种情形是实际开发中被广为采用的方法,所以,读者不难在Web上搜到相应的使用案例。

首先,让我们来分析一个简单的直接在Web页面上绘制并输出图像数据的例子。

二、直接在Web页面上绘制并输出图像数据

下面的代码示例在请求页面时将绘制三个部分重叠的矩形。该代码首先将ContentType属性设置为image/jpeg,以便将整个页面呈现为一幅JPEG图像。第二步,该代码调用Clear方法以确保不会将无关的内容(包括标头)与此响应一同发送。第三步,该代码将BufferOutput属性设置为true,从而使该页面在完全处理之后再发送到发出请求的客户端。第四步,创建两个用于绘制矩形的对象,即Bitmap和Graphics对象。在该页中创建的变量将作为绘制矩形的坐标和在最大的矩形中显示的字符串。

在绘制三个矩形和其中显示的字符串时,将Bitmap保存到与OutputStream属性相关联的Stream对象中,并将其格式设置为JPEG。接下来,该代码调用Dispose和Dispose方法来释放资源—这些资源为两个绘制对象所使用。最后,该代码调用Flush方法将缓冲的响应发送到请求客户端。

完整的实现代码如下所示:

<%@ Page Language="C#" %>
<%@ import Namespace="System.Drawing" %>
<%@ import Namespace="System.Drawing.Imaging" %>
<%@ import Namespace="System.Drawing.Drawing2D" %>
<script runat="server">
private void Page_Load(object sender, EventArgs e)
...{
//设置页面的content type为JPEG文件
//并且清除所有的响应头部信息
Response.ContentType = "image/jpeg";
Response.Clear();
//对响应作出缓冲以便处理完成后发送页面
Response.BufferOutput = true;
//创建一字体风格
Font rectangleFont = new Font(
"Arial", 10, FontStyle.Bold);
//创建整数变量
int height = 100;
int width = 200;
//创建一个随机数字生成器并且基于它创建
//变量值
Random r = new Random();
int x = r.Next(75);
int a = r.Next(155);
int x1 = r.Next(100);
//创建一张位图并且使用它创建一个
//Graphics对象
Bitmap bmp = new Bitmap(
width, height, PixelFormat.Format24bppRgb);
Graphics g = Graphics.FromImage(bmp);
g.SmoothingMode = SmoothingMode.AntiAlias;
g.Clear(Color.LightGray);
//使用这个Graphics对象绘制3个矩形
g.DrawRectangle(Pens.White, 1, 1, width-3, height-3);
g.DrawRectangle(Pens.Aquamarine, 2, 2, width-3, height-3);
g.DrawRectangle(Pens.Black, 0, 0, width, height);
//使用这个Graphics对象输出一个字符串
// on the rectangles.
g.DrawString(
"ASP.NET Samples", rectangleFont,
SystemBrushes.WindowText, new PointF(10, 40));
//在其中两个矩形上添加颜色
g.FillRectangle(
new SolidBrush(
Color.FromArgb(a, 255, 128, 255)),
x, 20, 100, 50);
g.FillRectangle(
new LinearGradientBrush(
new Point(x, 10),
new Point(x1 + 75, 50 + 30),
Color.FromArgb(128, 0, 0, 128),
Color.FromArgb(255, 255, 255, 240)),
x1, 50, 75, 30);
//把位图保存到响应流中并且把它转换成JPEG格式
bmp.Save(Response.OutputStream, ImageFormat.Jpeg);
//释放掉Graphics对象和位图所使用的内存空间
g.Dispose();
bmp.Dispose();
//把输出结果发送到客户端
Response.Flush();
}
</script>
<html>
<head>
</head>
<body>
<form runat="server">
</form>
</body>
</html>


接下来,让我们讨论本文重点—如何在ASP页面中输出直接存储在数据库中的图像数据。

时间: 2024-10-03 06:59:55

ASP.NET 2.0中用Response对象输出图像的相关文章

asp.net 2.0中用GRIDVIEW插入新记录

asp.net|插入 看了下国外某巨牛的BLOG,大概是讲asp.net 2.0中用GRIDVIEW插入新记录的,方法比较特别,但效果一般,故将程序转之,较为简单,不做解释等.<%@ Page Language="C#" ClassName="Default_aspx" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/

在ASP程序设计中在使用Response对象 2003

response|程序|对象|设计 Response对象在ASP程序设计中的主要功能是从浏览器端到服务器端传送数据到浏览器的客户端,我们知道ASP的脚本是在服务器端执行的,他并没有输出"值"的功能.要想拥有输出"值",就必须依靠Response对象. 在这里我们将关注其最常用的一些功能.也就是在程序设计中经常要用到的一些功能,具体如下: (1).response.write 发送信息到浏览器 (2). response.end 有效地中止代码 (3).respons

在ASP程序设计中在使用Response对象

   Response对象在ASP程序设计中的主要功能是从浏览器端到服务器端传送数据到浏览器的客户端,我们知道ASP的脚本是在服务器端执行的,他并没有输出"值"的功能.要想拥有输出"值",就必须依靠Response对象. 在这里我们将关注其最常用的一些功能.也就是在程序设计中经常要用到的一些功能,具体如下: (1).response.write 发送信息到浏览器 (2). response.end 有效地中止代码 (3).response.redirect 页面重定

ASP教程之Response对象的使用

response|对象|教程|response ASP主要有五个内建(built-in)对象:Server.Request.Response.Application和Session.现在我们通过举例来对它们进行讲解.首先是最常使用的Response对象. 例1 利用Response在网页中输出HTML文档 <html><head><title>ASP示例1</title></head><body><%Response.Write

ASP内置对象详解之Response对象

response|对象|内置对象|详解 Response对象用于向客户端浏览器发送数据,用户可以使用该对象将服务器的数据以HTML的格式发送到用户端的浏览器,它与Request组成了一对接收.发送数据的对象,这也是实现动态的基础.下面介绍它常用的属性和方法. 1.Buffer属性 该属性用于指定页面输出时是否要用到缓冲区,默认值为False.当它为True时,直到整个Active Server Page执行结束后才会将结果输出到浏览器上.如:<%Response.Buffer=True%>&l

ASP基础教程之实例学习ASP Response 对象

response|对象|基础教程 ASP Response 对象用于从服务器向用户发送输出的结果. 实例 使用ASP写文本 本例演示如何使用ASP来写文本. <html><body><%response.write("Hello World!")%></body></html> 在ASP中使用HTML标签格式化文本 本例演示如何使用ASP将文本和HTML标签结合起来. <html><body><%

在ASP程序设计中使用Response对象

Response对象在ASP程序设计中的主要功能是从浏览器端到服务器端传送数据到浏览器的客户端,我们知道ASP的脚本是在服务器端执行的,他并没有输出"值"的功能.要想拥有输出"值",就必须依靠Response对象. 在这里我们将关注其最常用的一些功能.也就是在程序设计中经常要用到的一些功能,具体如下: (1).response.write 发送信息到浏览器 (2). response.end 有效地中止代码 (3).response.redirect 页面重定向 如

ASP入门教程-Response对象的常用属性

一.Buffer属性 Response 对象的Buffer 属性是用来确定是否输出缓冲页,也就是控制何时将输出信息送至请求浏览器.Buffer 的取值可以是"true" 或 "False" ,若取True 表示使用缓冲页,若Web 服务器输出使用缓冲页,则只有当前页的所有服务器脚本处理完毕或是调用了Flush 或 End 方法,才将数据传送至客户端,若取False 表示不使用缓冲页,数据在当前页的所有服务器脚本处理的同时传送至客户端.其语法格式如下: Respons

ASP的Request和Response对象使用详解

Request和Response这两个对象是ASP所提供的内置对象中最常用的两个.在浏览器(或其他用户代理)和Web服务器之间,请求与响应中发生的信息交流可以通过ASP中的两个内置对象来进行访问和管理,这两个对象称为Request和Response对象. 在ASP页中所要进行的工作几乎都要访问这两个对象,使用这两个对象的方式将影响页面的效率及可靠性.当然,它们的主要用途是访问用户发回到服务器的值,即从HTML页的<FORM>段获得或附在URL后面作为查询字符串,并创建合适的输出返回给用户,且它