【问题标题】:How to write text on top of an image如何在图片上写文字
【发布时间】:2014-04-02 20:25:58
【问题描述】:

我要做的是从连接到我的计算机的网络摄像头中保存一张图片,在该图片上写一个字符串,然后保存文件。我的程序运行的方式是首先拍照,然后我希望能够在上面写字。这是到目前为止我在保存的图像上编写的代码,但它会引发“ExternalException”。

Bitmap myBitmap = new Bitmap("C:\\Users\\me\\Desktop\\CamApp\\" + filename + ".jpeg");
Graphics g = Graphics.FromImage(myBitmap);
g.DrawString("HELLO", new Font("Tahoma", 40), Brushes.White, new PointF(0, 0));
myBitmap.Save("C:\\Users\\me\\Desktop\\CamApp\\" + filename + ".jpeg",
    System.Drawing.Imaging.ImageFormat.Jpeg);

提前致谢。

【问题讨论】:

  • 如果你把它保存到不同的文件名,它可以工作吗?
  • @David 是的,当我更改它的名称时。那我怎么把它保存成同名呢?
  • ExternalException 中的消息或代码是什么?
  • @SimonLaing 消息是“GDI+ 中发生一般错误”。错误代码:-2147467259
  • @OlivierJacot-Descombes 在我尝试保存时的最后一行

标签: c# image-processing bitmap


【解决方案1】:

您看到的问题在另一个问题中讨论:Free file locked by new Bitmap(filePath)

当您使用带有文件名的Bitmap 构造函数时,文件将被锁定,直到Bitmap 被释放。这可以防止您覆盖该图像文件。

您可以使用@Brian 对上述问题的回答来加载Bitmap 而无需锁定文件:https://stackoverflow.com/a/14837330/34208

使用此方法加载图像后,您将能够保存原始文件。

使用代码示例编辑:

更换你的线路...

Bitmap myBitmap = new Bitmap("C:\\Users\\me\\Desktop\\CamApp\\" + filename + ".jpeg");

Bitmap myBitmap = FromFile(@"C:\Users\me\Desktop\CamApp\" + filename + ".jpeg");

并确保从链接的答案中复制FromFile 方法。

【讨论】:

  • 感谢您的回答。所以我知道该文件已被锁定,但我对如何在我的代码中使用此方法感到困惑。我是否按照以下方式做一些事情:'Bitmap myBitmap = new Image(src)'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-11
  • 2013-10-21
  • 2012-07-04
  • 2020-12-06
  • 1970-01-01
  • 2010-10-25
  • 1970-01-01
相关资源
最近更新 更多