使用for循环将图像保存在文件夹中

时间:2013-10-12 12:12:45

标签: c#

我想使用for循环将图像保存在文件夹C:\ Users \ crowds \ Documents \ Example中。 我也希望这个名字保存如下: Sample.jpg,Sample1.jpg

知道如何实施它?

这是我的代码段:

private void button4_Click(object sender, EventArgs e)
    {
        var capture = new Emgu.CV.Capture();

        using (var ImageFrame = capture.QueryFrame())
        {
            if (ImageFrame != null)
            {
                pictureBox1.Image = ImageFrame.ToBitmap();
                ImageFrame.Save(@"C:\Users\crowds\Documents\Example\Sample.jpg");

            }
            _capture.Dispose();
        }

4 个答案:

答案 0 :(得分:1)

你可以尝试这样的事情:

List<Image> imageList = //Get all the image list
for(i=0; i<imageList.Count;i++) 
 { 
   ImageFrame.Save(@"C:\Users\crowds\Documents\ExampleSample"+i.toString()+".jpg");           
 }

答案 1 :(得分:0)

试试吧

string root="C:\Users\crowds\Documents\Example\Sample";
for(int i=0;i<value;i++)
{ 
    string path=root+i+".jpg"; ImageFrame.Save(path);
}

并且更好地调试更多。

答案 2 :(得分:0)

根据您的评论,如果您只想在每次执行以下操作时保存到不同的文件名:

private int filenumber = 0;

private void button4_Click(object sender, EventArgs e)
{   
    using (var capture = new Emgu.CV.Capture())
    using (var ImageFrame = capture.QueryFrame())
    {
        if (ImageFrame != null)
        {
            pictureBox1.Image = ImageFrame.ToBitmap();
            ImageFrame.Save(String.Format(@"C:\Users\crowds\Documents\Example\Sample{0}.jpg", filenumber++));       
        }   
    }
}

请注意,此代码不检查文件的预先存在,如果已存在则可能抛出异常。理想情况下,您应首先使用File.Exists(...)

进行检查

答案 3 :(得分:0)

EMGU CV库从捕获设备创建捕获图像,然后根据需要进行管理。您的示例是尝试在按下按钮时保存图像,而不是迭代图像集合。

您可能希望了解的是您维护的counter mechanism。例如,当您按下按钮或应用程序初始化时,您会阅读包含图像的directory并解析名称以确定最后保存图像的名称。获取图像名称的number部分并使用它来初始化counter,然后每次按下按钮保存图像,递增计数器。

以下简化示例:

<强>计数器

private int lastSaveCount = 0;

这需要在您的Button_Click事件和下面的初始化计数器机制可以访问的位置。

初始化计数器

var files = Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\Example\", @"Sample*.jpg").ToList();
foreach (var file in files)
{
    var split = Regex.Split(file, @"[a-zA-Z]{1,}([\d]{1,}).jpg", RegexOptions.IgnoreCase);
    var save = 0;
    if (Int32.TryParse(split[1], out save))
    {
        lastSaveCount = save > lastSaveCount ? save : lastSaveCount;
    }
}

将上述内容置于适当的位置。

按按

private void button4_Click(object sender, EventArgs e)
{
    var capture = new Emgu.CV.Capture();

    using (var ImageFrame = capture.QueryFrame())
    {
        if (ImageFrame != null)
        {
            lastSaveCount++;
            pictureBox1.Image = ImageFrame.ToBitmap();
            var filename = string.Format(@"C:\Users\crowds\Documents\Example\Sample{0}.jpg", lastSaveCount);
            ImageFrame.Save(filename);

        }
        _capture.Dispose();
    }
}