我正在使用以下代码绘制图像并将其输出到网页:
Bitmap image = new Bitmap(350, 350);
Graphics g = Graphics.FromImage(image);
// code using g to draw image here
image.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);
这很好用。现在我想在输出中添加一些文本(javascript)。但是,当我这样做*文本没有显示或图像作为垃圾出现。
这样做的正确方法是什么?
(* - 我更改了contenttype并使用了reponse.write。还尝试将一个字节数组文本写入输出流。)
答案 0 :(得分:3)
您需要回复包含您的Javascript和<img>
标记的HTML,该标记会导致您使用此图片回复其他请求。
可能会将请求此图片的<img>
更改为<iframe>
,并将src设置为请求。
或者,它可以是一个<script>
标记,您可以将JavaScript返回并将其添加到DOM中。
答案 1 :(得分:3)
如果您仍想在一个请求中执行此操作,那么http://danielmclaren.net/2008/03/embedding-base64-image-data-into-a-webpage可能是最好的方法。它将base64编码数据直接包含在src
标记的img
属性中。即。
<img src="data:image/png;base64,iVBORw0KGgoAAAANS..." />
答案 2 :(得分:3)
您可以为您的图像代码编写一个名为imageGrab.aspx的单独文件,并使用javascript在另一个文件中调用此文件。它应该工作正常。例如
<img border=0 height=150 src='ImageGrab.aspx?seqid=3'>
imageGrab.aspx.cs看起来像
public partial class ImageGrab : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
try
{
byte[] byteData = new byte[0];
// fetch the value of parameter into the byte array
string seq_id = Request.QueryString["seqid"];
if (string.IsNullOrEmpty(seq_id))
{
seq_id = "214";
}
byteData = DBManager.GetBinaryData(seq_id);
Response.Clear();
Response.ContentType = "image/jpeg";
Response.BinaryWrite(byteData);
Response.End();
}
catch (Exception exc)
{
Response.Write(exc.Message);
}
}
}