在图像上添加文本:GDI +中发生了一般错误

时间:2012-10-09 13:21:46

标签: c# asp.net-mvc asp.net-mvc-3 gdi+

我想在特定图像上写3个文字。 localhost没有任何问题。 但在服务器上,我尝试了一切,但没有任何改变。 总是说:GDI +中发生了一般性错误。

如果我一步一步地在图像上写文字,我得到同样的错误。添加第一个文本后,由于第一个文本在图像上进行处理,因此无法在图像上添加第二个和第三个文本。

要点:

首先,我想在img1和Dispose上添加text1。 其次我想在img1和Dispose上添加text2。 第三,我想在img1和Dispose上添加text3。

  using (Bitmap bitmapMasterImage = new Bitmap(stringMasterImageName))
            {
                using (Graphics graphicsMasterImage = Graphics.FromImage(bitmapMasterImage))
                {
                    graphicsMasterImage.DrawString(stringText1, new Font("Arial", 20, FontStyle.Bold), new SolidBrush(colorStringColor), new Point(233, 134), stringformatWriteTextFormat);
                    graphicsMasterImage.DrawString(stringText2, new Font("Arial", 20, FontStyle.Bold), new SolidBrush(colorStringColor), new Point(233, 210), stringformatWriteTextFormat);
                    graphicsMasterImage.DrawString(stringText3, new Font("Arial", 20, FontStyle.Bold), new SolidBrush(colorStringColor), new Point(233, 300), stringformatWriteTextFormat);
                }

                Response.Clear();
                Response.ContentType = "image/jpeg";

                using (MemoryStream stream = new MemoryStream())
                {
                    bitmapMasterImage.Save(stream, ImageFormat.Jpeg);
                    bitmapMasterImage.Save(stringOutPutFileName);
                    stream.WriteTo(Response.OutputStream);
                }
            }

谢谢

3 个答案:

答案 0 :(得分:0)

此消息通常在

时出现
  • 您没有写入权限来保存文件
  • 路径不存在
  • 该文件正在使用中

答案 1 :(得分:0)

检查以确保路径在服务器上的设置方式相同(即stringMasterImageName)。此外,这可能是许可/安全问题。 Look here

答案 2 :(得分:0)

尝试关闭画笔流

using (var brush = new SolidBrush(colorStringColor))
{
   ...         
}

或者使用内置画笔,不需要关闭它们。

graphicsMasterImage.DrawString(stringText1, font, Brushes.Black, new Point(233, 134), stringformatWriteTextFormat);