c#文件夹中的每个图像

c#文件夹中的每个图像,c#,image,foreach,tessnet2,magicknet,C#,Image,Foreach,Tessnet2,Magicknet,下面是一些代码 创建一个目录 使用MagickNet将PDF转换为单独的BMP图像,并将其存储在文件夹(ImagePath)中 然后它使用TessNet2扫描文件夹中的每个图像以解析出信息 我似乎无法获取扫描ImagePath文件夹的foreach循环。有什么帮助吗 当前的错误出现在'foreach'语句上,它表示“无法将类型'char'转换为'System.Drawing.Image'” 您正在通过字符串ImagePath进行循环,这将为您提供一组字符。您需要使用directory.GetFi

下面是一些代码

  • 创建一个目录
  • 使用MagickNet将PDF转换为单独的BMP图像,并将其存储在文件夹(ImagePath)中
  • 然后它使用TessNet2扫描文件夹中的每个图像以解析出信息
  • 我似乎无法获取扫描ImagePath文件夹的foreach循环。有什么帮助吗

    当前的错误出现在'foreach'语句上,它表示“无法将类型'char'转换为'System.Drawing.Image'”


    您正在通过
    字符串ImagePath
    进行循环,这将为您提供一组字符。您需要使用
    directory.GetFiles()
    搜索目录,并使用
    Image.FromFile()
    加载图像:


    您可以使用
    Directory.GetFiles
    返回目录中的所有文件名,并从中创建
    位图

    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...
      }
    }
    

    我错过了MaylorTaylor在加载图像后想要位图的消息。过滤器也是一个好主意。大约两小时前说过:)我对这个方法一无所知。它工作得非常完美,所以我不必浪费空间来创建图像。谢谢
    foreach (string imageFileName in Directory.GetFiles(ImagePath, "*.jpg"))
    {
        using (Bitmap bmp = new Bitmap(imageFileName))
        {
        }
    }
    
    foreach (MagickImage image in images)
    {
      using (Bitmap bmp = image.ToBitmap())
      {
        tessnet2.Tesseract tessocr = new tessnet2.Tesseract();
        // etc...
      }
    }