我要做的是从连接到我的计算机的网络摄像头保存图片,在该图片的顶部写一个字符串,然后保存文件。我的程序运行的方式首先是拍照,然后我想能够在它上面写。这是我到目前为止在我保存的图像上编写的代码,但它抛出了一个'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);
提前致谢。
答案 0 :(得分:2)
在另一个问题中讨论了您所看到的问题: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
方法。