我正在使用以下代码(感谢Dolph Larson)在ASP.net服务器上以位图格式拍摄预制图像文件,在其上绘制一个字符串并将其保存到服务器上的文件中。在原始代码中,他将位图转储到OutputStream,但我想将其转储到文件中。
下面的代码版本成功创建了新文件,但是当我打开它时,字符串不会出现在新文件中的图像上。我想我错过了一步 - 当我使用bitMapImage.Save(“bitmaptest.jpg”,ImageFormat.Jpeg)时,我只是重新保存原始而不是修改版本?
以下是代码:
//Load the Image to be written on.
Bitmap bitMapImage = new
System.Drawing.Bitmap(Server.MapPath("generic.jpg"));
Graphics graphicImage = Graphics.FromImage(bitMapImage);
graphicImage.SmoothingMode = SmoothingMode.AntiAlias;
graphicImage.DrawString("testing 1 2 3",
new Font("Arial", 20, FontStyle.Bold),
SystemBrushes.WindowText, new Point(0, 0));
Response.ContentType = "image/jpeg";
bitMapImage.Save("bitmaptest.jpg", ImageFormat.Jpeg);
graphicImage.Dispose();
bitMapImage.Dispose();
提前致谢!
答案 0 :(得分:2)
你的代码工作得很好;您只需指定要保存图像的路径:
示例:
//Load the Image to be written on.
Bitmap bitMapImage = new
System.Drawing.Bitmap((@"c:\\foo\\generic.jpg"));
Graphics graphicImage = Graphics.FromImage(bitMapImage);
graphicImage.DrawString("testing 1 2 3",
new Font("Arial", 20, FontStyle.Bold),
SystemBrushes.WindowText, new Point(0, 0));
bitMapImage.Save("c:\\foo\\bitmaptest.jpg", ImageFormat.Jpeg);
graphicImage.Dispose();
bitMapImage.Dispose();
注意在你的情况下,bitMapImage.Save需要如下:bitMapImage.Save(Server.MapPath("~/Images")+"newImage.jpg",ImageFormat.Jpeg);
,因为你试图在asp.net应用程序上保存图像。我的示例中的~/Images
只是您应用内的虚拟目录Images
。
答案 1 :(得分:1)
是..你正在保存相同的图像。你必须创建一个新的wbitmap并保存它: -
Bitmap bitMapNew = Bitmap.FromHbitmap(graphicImage.GetHdc());
bitMapNew.Save("bitmaptest.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
添加这些行而不是bitMapImage.save