Загрузите динамически сгенерированное изображение с веб-сайта ASP.NET - PullRequest
3 голосов
/ 15 сентября 2011

Я динамически генерирую изображение из текста, и существующее изображение на моем сайте asp.net.

Вот код:

protected void Button1_Click(object sender, EventArgs e)
{
    var tytul = Request.QueryString["Tytul"];
    var tresc = Request.QueryString["Tresc"];

    var font = new Font("Verdana", 23);

    var brushForeColor = new SolidBrush(Color.Black);
    var brushBackColor = new SolidBrush(Color.FromArgb(248, 247, 182));

    var test = new Bitmap(450, 60);
    var graphicstest = Graphics.FromImage(test);
    var width = (int)graphicstest.MeasureString(tresc, font).Width;
    var height = (int)graphicstest.MeasureString(tresc, font).Height;

    while (width > 450)
    {
        height = height + 25;
        width = width - 450;
    }

    var heightall = height + 40 + 30 + 100;

    var bitmap = new Bitmap(450, heightall);
    var graphics = Graphics.FromImage(bitmap);

    var displayRectangle = new Rectangle(new Point(0, 0), new Size(450, 40));
    graphics.FillRectangle(brushBackColor, displayRectangle);

    //Define string format 
    var format1 = new StringFormat(StringFormatFlags.NoClip);
    format1.Alignment = StringAlignment.Center;

    var format2 = new StringFormat(format1);

    //Draw text string using the text format
    graphics.DrawString(tytul, font, brushForeColor, displayRectangle, format2);

    // Rysowanie drugiego boxa

    brushBackColor = new SolidBrush(Color.FromArgb(253, 253, 202));
    font = new Font("Verdana", 18);

    displayRectangle = new Rectangle(new Point(0, 40), new Size(450, height + 30));
    graphics.FillRectangle(brushBackColor, displayRectangle);

    displayRectangle = new Rectangle(new Point(0, 55), new Size(450, height + 15));


    graphics.DrawString(tresc, font, brushForeColor, displayRectangle, format2);

    graphics.DrawImage(System.Drawing.Image.FromFile(Server.MapPath(".") + "/gfx/layout/podpis.png"), new Point(0, height + 70));

    Response.ContentType = "image/png";
    bitmap.Save(Response.OutputStream, ImageFormat.Png);      
}

Как вы можете видеть, растровое изображение сохраненои показал на странице aspx после обратной передачи.То, что я хочу сделать, это когда пользователь нажимает кнопку1, то генерируется изображение и всплывает окно загрузки браузера, без сохранения на сервере или показа на странице.Как это сделать?Пожалуйста, помогите мне.

Приветствия.

Ответы [ 2 ]

1 голос
/ 15 сентября 2011
0 голосов
/ 15 сентября 2011

После сохранения файла:

Response.AppendHeader("content-disposition", "attachment; filename=podpis.png" );
Response.WriteFile("yourfilepath/podpis.png");
Response.End;
...