繁体   English   中英

C#foreach文件夹中的图像

[英]c# foreach image in folder

下面是一些代码

  1. 创建一个目录
  2. 使用MagickNet将PDF转换为单独的BMP图像并将其存储在文件夹(ImagePath)中
  3. 然后,它使用TessNet2扫描该文件夹中的每个图像以解析出信息

我似乎无法获得扫描ImagePath文件夹的foreach循环。 有什么帮助吗?

现在的错误在'foreach'语句上,并显示“无法将类型'char'转换为'System.Drawing.Image'”

static void Main(string[] args)
    {
        string ImagePath = exePath + "\\Images"; 
        if (!Directory.Exists(ImagePath))
        {
            Directory.CreateDirectory(ImagePath);
        }

        MagickReadSettings settings = new MagickReadSettings();
        settings.Density = new MagickGeometry(300, 300);

        using (MagickImageCollection images = new MagickImageCollection())
        {
            images.Read(@"D:\Test\ABStest.pdf",settings);
            int page = 1;
            foreach (MagickImage image in images)
            {
                image.Write(ImagePath + "\\ABS" + page + ".bmp");
                page++;
            }
        }



        foreach (Image item in ImagePath)
        {
            using (Bitmap bmp = new Bitmap(item))
            {
                tessnet2.Tesseract tessocr = new tessnet2.Tesseract();
                tessocr.Init(@"C:\Users\Matt Taylor\Documents\Visual Studio 2012\Projects\TessNet2\TessNet2\bin\Debug\tessdata", "eng", false);
                tessocr.GetThresholdedImage(bmp, Rectangle.Empty).Save("c:\\temp\\" + Guid.NewGuid().ToString() + ".bmp");
                // Tessdata directory must be in the directory than this exe
                Console.WriteLine("Multithread version");
                ocr.DoOCRMultiThred(bmp, "eng");
                //Console.WriteLine("Normal version");
                //ocr.DoOCRNormal(bmp, "eng");
            }
        }
    }       

您可以使用Directory.GetFiles返回Directory.GetFiles中的所有文件名,并从那里创建Bitmaps

foreach (string imageFileName in Directory.GetFiles(ImagePath))
{
    using (Bitmap bmp = new Bitmap(imageFileName))
    {
    }
}

但是,如果该文件夹中还有其他文件,则应添加一个过滤器

foreach (string imageFileName in Directory.GetFiles(ImagePath, "*.jpg"))
{
    using (Bitmap bmp = new Bitmap(imageFileName))
    {
    }
}

您无需将文件保存到磁盘。 您可以使用MagickImage的.ToBitmap()方法。

foreach (MagickImage image in images)
{
  using (Bitmap bmp = image.ToBitmap())
  {
    tessnet2.Tesseract tessocr = new tessnet2.Tesseract();
    // etc...
  }
}

您正在遍历String ImagePath ,它为您提供了字符集合。 您需要使用Directory.GetFiles()搜索目录,并使用Image.FromFile()加载图像:

foreach (String itemPath in Directory.GetFiles(ImagePath))
{
    using (Image item = Image.FromFile(itemPath))
    {
        ...
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM