如何将从网络摄像头捕获的图像保存到具有不同文件名的c:/
驱动器?
我已经能够捕获图像网络摄像头并将其保存在我的c:/驱动器上,但是我遇到了一些问题。我希望每次保存图像时,都不应该覆盖已保存在我的c:/
上的旧图像(即保存的图像与之前未保存的图像不同pix1.jpg
,pix2.jpg
,pixs3.jpg
,pix4.jpg
等。
答案 0 :(得分:4)
就个人而言,我会将一个DateTime
格式的可排序格式附加到文件名而不是使用数字。
string name = "pix";
string fileName = string.Format("{0}_{1}", name, DateTime.Now.ToString("u"));
这会为您提供类似pix_201110310834
,pix_201110310835
,pix_201110310836
等文件名。
使用这种方法,您不再需要担心只使用正确的索引; DateTime将始终继续前进。
注意:
DateTime.Now.Ticks
。DateTime.UtcNow
是你的朋友)答案 1 :(得分:2)
在捕获并保存到某个文件名的方法中,使用:
string fileName;
int n = 0;
do {
fileName = "pix" + (++n).ToString() + ".jpg";
} while(System.IO.File.Exists(fileName));
然后将fileName
添加到路径中,您就完成了。
答案 2 :(得分:1)
如果您无法跟踪当前编号的输出图片,则可以查看当前存在的文件并确定最大数量,然后添加包含下一个编号的文件。
int max = 0;
var files = Directory.EnumerateFiles(@"C:\pictures", "pix*.jpg");
if(files.Any())
max = files.Select(x => Convert.ToInt32(Path.GetFileNameWithoutExtension(x.Name)
.Substring("pix".Length)))
.Max();
string fileName = Path.Combine(@"C:\pictures", string.Format("pix{0}.jpg", max + 1));