Как написать текст и изображение в Response.OutputStream в ASP.NET - PullRequest
0 голосов
/ 04 декабря 2009

Я рисую изображение и вывожу его на веб-страницу, используя следующий код:

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). Однако, когда я делаю *, либо текст не отображается, либо изображение появляется как мусор.

Как правильно это сделать?

(* - я изменил тип содержимого и использовал reponse.write. Также попытался записать байтовый массив текста в выходной поток.) ​​

Ответы [ 3 ]

3 голосов
/ 05 декабря 2009

Если вы все еще хотите сделать это в одном запросе, тогда http://danielmclaren.net/2008/03/embedding-base64-image-data-into-a-webpage может быть лучшим способом сделать это. Он включает данные в кодировке base64 прямо в атрибут src тега img. т.е.

<img src="data:image/png;base64,iVBORw0KGgoAAAANS..." />
3 голосов
/ 05 декабря 2009

вы можете написать отдельный файл с именем 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);
        }
    }

}
3 голосов
/ 04 декабря 2009

Вам необходимо ответить с помощью HTML, который содержит ваш Javascript и тег <img>, который вызывает другой запрос, когда вы отвечаете этим изображением.

Возможно, измените <img>, запрашивающий это изображение, на <iframe> с src, установленным на запрос.

Кроме того, это может быть тег <script>, в который вы возвращаете JavaScript и добавляете img в DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...