开发者

how to write text and an image to a Response.OutputStream in ASP.NET

开发者_高级运维I'm drawing an image and outputing it to web page using the following code:

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);

This works fine. Now I'd like to add a some text to the output (javascript). However, when I do* either the text isn't displayed or image comes out as garbage.

What's the proper way to do it?

(*- I changed the contenttype and used reponse.write. Also tried writing a byte array of text to the outputstream.)


You need to respond with HTML that has your Javascript and an <img> tag that causes another request where you respond with this image.

Probably change the <img> that is requesting this image to an <iframe> with src set to the request.

Alternatively, it could be a <script> tag that you return JavaScript to and have it add an img to the DOM.


If you still want to do this in one request, then http://danielmclaren.net/2008/03/embedding-base64-image-data-into-a-webpage might be the best way to do it. It involves base64 encoded data right into the src attribute of the img tag. i.e.

<img src="data:image/png;base64,iVBORw0KGgoAAAANS..." />


you can write a separate file called imageGrab.aspx for your image code and call this one in another file with javascript. It should work fine. For example

<img border=0 height=150 src='ImageGrab.aspx?seqid=3'>

imageGrab.aspx.cs will looks like

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);
        }
    }

}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜