2012-07-20 48 views
0

我有一個ASP.NET應用程序和一個生成圖像的庫。它被設置如下:如何從httpHandlers在C中加載動態圖像#

在Web.config我在< HttpHandlers的聲明像>節這樣:

<add path="My.image.aspx" verb="GET" type="MyProject.Handlers.MyImageHandler, MyProject" validate="false"/> 

此銜接的代碼來生成圖像,以該路徑然後在我的.aspx頁面上使用,如下所示:

<asp:Image ImageUrl="My.image.aspx" BorderWidth="0" ID="myImage" runat="server"/> 

通常在查看此頁面時,圖像加載正確。

但是,我需要將此圖像輸出到PDF文件,但是因爲PDF不會正確解釋頁面HTML與該URL(說它無法找到資源,因爲這些文件僅限於解釋基本的HTML/CSS),我想嘗試在後面的代碼中加載圖像,並以這種方式將其輸出到PDF。但是,我不知道如何在後面的代碼中加載這個圖像。我嘗試了以下內容:

System.Drawing.Image img = System.Drawing.Image.FromFile("My.image.aspx"); 

但是沒有運氣。有沒有一種正確的方法來加載這個圖像在我指定的httpHandler後面的代碼中?

編輯:我找到了解決方法,因爲我無法從後面的代碼加載圖像。相反,我剛剛使用了asp:Image >控件來加載頁面上的文件並觸發處理程序。當處理程序創建System.Drawing.Image文件時,我可以將其添加到Session對象以供稍後在該頁面上使用。但是,我仍然無法找到一種方法來觸發後臺代碼中的所有內容,而無需使用前端ASP控件。

回答

0

你asp的:像有和ID MYIMAGE

所以在後面的代碼,你可以使用這種方式

using (Bitmap theImage = new Bitmap("My.image.aspx")) 
{ 
    using(MemoryStream stream = new MemoryStream()) 
    { 
     theImage .Save(stream , System.Drawing.Imaging.ImageFormat.Png); 
     stream .WriteTo(context.Response.OutputStream); 
    } 
} 
+0

「System.Drawing.Image.FromFile( 「My.image.aspx」 )'將不會加載圖像,因爲它說它找不到該文件。 ASP.NET Image控件不包含FromFile屬性,最後,ASPX上的圖像是來自System.Web.UI.WebControls庫的不同類型的圖像。 – user1048281 2012-07-20 15:43:21

+0

@ user1048281你的權利我得到了一邊跟蹤我已經更新了答案 – HatSoft 2012-07-20 15:46:16

+0

那麼這可以加載圖像。但我想將圖像文件存儲爲System.Drawing.Image類型以進行輸出。編輯:這也是我已經做的同樣的事情......只是從後面的代碼。 – user1048281 2012-07-20 16:04:13