0

イメージを生成するライブラリを備えた ASP.NET アプリケーションがあります。次のように設定されています。

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はそのURLのページHTMLを正しく解釈しないため(これらのファイルは基本的なHTML/CSSのみの解釈に制限されているため、リソースが見つからないと言います)、私はコードビハインドで画像をロードし、その方法でPDFに出力しようとしました。ただし、この画像をコードビハインドにロードする方法がわかりません。私は次のことを試しました:

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

しかし、運がありませんでした。指定した httpHandler からコード ビハインドにこのイメージをロードする適切な方法はありますか?

編集:コードビハインドからイメージをロードできなかったため、回避策を見つけました。代わりに、<asp:Image> コントロールを使用してページにファイルをロードし、ハンドラーをトリガーしました。ハンドラーが System.Drawing.Image ファイルを作成すると、後でそのページで使用できるように、それを Session オブジェクトに追加することができました。しかし、フロント エンドの ASP コントロールを使用せずに、コード ビハインドからすべてをトリガーする方法を見つけることができませんでした。

4

1 に答える 1

0

あなたのasp:imageはmyImageとしてidを持っています

したがって、コードビハインドでは、このように使用できます

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);
   }
}
于 2012-07-20T15:35:28.767 に答える