ASP.NET 2.0中用Response對象輸出映像

來源:互聯網
上載者:User

本文樣本小工程將向你展示如何使用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頁面中輸出直接儲存在資料庫中的映像資料。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.