C# 从ASP.NET网站下载动态生成的图像
我正在从文本和asp.net网站上的现有图像动态生成图像 代码如下:C# 从ASP.NET网站下载动态生成的图像,c#,asp.net,image,image-processing,dynamic,C#,Asp.net,Image,Image Processing,Dynamic,我正在从文本和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
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,然后图像生成和浏览器下载窗口弹出,而不保存在服务器上或显示在页面上。如何做到这一点?请帮帮我
干杯。您需要。保存文件后:
Response.AppendHeader("content-disposition", "attachment; filename=podpis.png" );
Response.WriteFile("yourfilepath/podpis.png");
Response.End;
所以我应该这样做:Response.AddHeader(“内容处置”、“附件;文件名=“+fileinfo.Name”);和Response.AddHeader(“Content Length”,fileInfo.Length.ToString());然后是Response.WriteFile(fileinfo.FullName);我应该如何提供这个动态生成的图像名称和长度??我不能让它工作。@Peter:名字可以是你想要的任何东西;没关系。例如,您可以执行以下操作:
Response.AddHeader(“内容处置”、“附件;文件名=“+”abc.png”)代码>将提示用户下载图像“abc.png”。是否正确?我有我的疑问,因为我并没有将图像保存为podpis.png。我只是将podpis.png粘贴到动态创建的位图的底部。如何将生成的位图传递给用户下载?我相信您可以直接将其写入页面,而不是保存文件。。。Response.WriteFile(Response.OutputStream);问题是我不想把它直接写到页面上。我希望用户单击按钮->图像正在生成->下载窗口弹出,用户正在保存图像。appendheader(“内容处置”,“附件”)应该可以。试试看。我现在不能尝试,但我很确定这会起作用。回发将是一个附件,然后浏览器将决定做什么——下载、保存等。