在ASP.net C#中将文本添加到JPG图像并保存到服务器上的文件

时间:2012-05-24 00:50:01

标签: asp.net visual-studio drawstring

我正在使用以下代码(感谢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();

提前致谢!

2 个答案:

答案 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