Как избавиться от временного отображения экрана для bitmap.Save (Response.OutputStream, ImageFormat.Jpeg)? - PullRequest
0 голосов
/ 28 февраля 2020

Работает dr aws текст номера и имени на лотерейном билете и правильно сохраняет его в файле клиента. Но затем возвращает меня = не на веб-страницу, а на полный черный экран с изображением билета. Нет способа сделать это go прочь и вернуться на веб-страницу, за исключением повторного запуска страницы. Я попытался записать в поток памяти, но он не сохранил бы его правильно, если бы я удалил Response.OutputStream и изменил его на поток памяти в этой строке = bitmap.Save(Response.OutputStream, ImageFormat.Jpeg);

Потребовалось меньше времени, чтобы научиться использовать графику c Система с нуля, чем узнать, как сделать так, чтобы она не отображалась на экране. Lost!

protected string RaffelTicketWrImg(string sOrigBlankTicketImg, string sTicketNbr)
{
    //creating a image object   
    System.Drawing.Image bitmap = (System.Drawing.Image)Bitmap.FromFile(sOrigBlankTicketImg); // set image    
                                                                                              //draw the image object using a Graphics object   
    Graphics g = Graphics.FromImage(bitmap);

    //Set the alignment based on the coordinates      
    StringFormat stringformat = new StringFormat();
    stringformat.Alignment = StringAlignment.Center;
    stringformat.LineAlignment = StringAlignment.Center;
    //stringformat.FormatFlags = StringFormatFlags.DirectionVertical;

    StringFormat stringformat2 = new StringFormat();
    stringformat2.Alignment = StringAlignment.Center;
    stringformat2.LineAlignment = StringAlignment.Center;

    //Set the font color/format/size etc..     
    System.Drawing.Color StringColor = ColorTranslator.FromHtml("#000000");//direct color adding   
    System.Drawing.Color StringColor2 = ColorTranslator.FromHtml("#000000");//customise color adding   
    string sWriteThis = sTicketNbr;//Your Text On Image   
    string sWriteThis2 = sTicketNbr;//Your Text On Image   
                                    //Ticket Size 1.26" by 2.62"
                                    //Graphics g = this.CreateGraphics();

    double dLen = ((sTicketNbr.Length / 2) * 13) / 2;
    int iPixcels = bitmap.Width;
    double iPoints = iPixcels * g.DpiX / Convert.ToInt16(72); //72 / 96;
    int iX_Hroz = Convert.ToInt16((iPoints / 2) - Convert.ToInt16(dLen));
    int iY_Vert = 30;
    g.DrawString(sWriteThis, new Font("arial", 14, FontStyle.Bold),
        new SolidBrush(StringColor), new Point(iX_Hroz, iY_Vert), stringformat); Response.ContentType = "image/jpeg";

    iY_Vert = 222;

    g.DrawString(sWriteThis2, new Font("arial", 14, FontStyle.Bold),
        new SolidBrush(StringColor2), new Point(iX_Hroz, iY_Vert), stringformat2); Response.ContentType = "image/jpeg";

    sWriteThis = txPersonNamed.Text;//Your Text On Image   
                                    //Ticket Size 1.26" by 2.62"
    string[] words = sWriteThis.Split(' ');
    iX_Hroz = 15;
    iY_Vert = 90;

    stringformat.Alignment = StringAlignment.Near;
    stringformat.LineAlignment = StringAlignment.Near;

    foreach (var word in words)
    {
        g.DrawString(word.ToString(), new Font("arial", 10, FontStyle.Bold),
            new SolidBrush(StringColor), new Point(iX_Hroz, iY_Vert), stringformat);
        Response.ContentType = "image/jpeg";
        iY_Vert += 20;
    }

    bitmap.Save(Response.OutputStream, ImageFormat.Jpeg);

    string sSaveFile = Vars.TicketPath + "/" + sTicketNbr + ".jpg";

    if (txEmail.Text.Length == 0) //Test Diaplay
    {
        if (File.Exists(sSaveFile)) File.Delete(sSaveFile);
    }

    bitmap.Save(sSaveFile, System.Drawing.Imaging.ImageFormat.Jpeg);

    // Release memory used by the Graphics object
    // and the bitmap.
    g.Dispose();
    bitmap.Dispose();

    // Send the output to the client.
    Response.Flush();
} 
...