1

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

提前致谢!

4

2 回答 2

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应用程序中的虚拟目录。

于 2012-05-24T01:03:29.580 回答
1

是的..您正在保存相同的图像。您必须创建一个新的 wbitmap 并保存它:-

Bitmap bitMapNew = Bitmap.FromHbitmap(graphicImage.GetHdc());
bitMapNew.Save("bitmaptest.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

添加这些行而不是您的 bitMapImage.save

于 2012-05-24T01:01:19.160 回答