繁体   English   中英

C#位图:System.ArgumentException“参数无效”。

[英]C# Bitmap: System.ArgumentException “Invalid parameter.”

面对这样的问题“ System.ArgumentException”,同时在带有图片(ASCII)的文本文件中从图像(.jpg)写入信封。 根据说明做了( https://www.bilibili.com/video/av5862027/

对于第二天或第三天,我尝试解决此问题。

码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.IO;

namespace ayy
{
    class Program
    {
        static void Main(string[] args)
        {
            FileStream stream = new FileStream(@"meme.txt", FileMode.OpenOrCreate, FileAccess.Write);
            StreamWriter writer = new StreamWriter(stream);

            for (int imageNumber = 0; imageNumber <= 7600; imageNumber++)
            {
                string url = @"C:\Users\Admin\source\repos\badapple\ayy\ba\ba";
                if (imageNumber < 10)
                {
                    url += "00000";
                }
                else if (imageNumber < 100)
                {
                    url += "0000";
                }
                else if (imageNumber < 1000)
                {
                    url += "000";
                }
                else
                {
                    url += "00";
                }
                url += imageNumber.ToString() + ".jpg";
                Bitmap image = new Bitmap(url, true);

                for (int y = 0; y < image.Height; y++)
                {
                    string str = "";
                    for (int x = 0; x < image.Width; x++)
                    {
                        Color pixel = image.GetPixel(x, y);
                        if (pixel.R > 200)
                        {
                            str += "#";
                        }
                        else
                        {
                            str += " ";
                        }
                        writer.WriteLine(str);
                    }
                    Console.WriteLine(url);
                }
                writer.Close();
            }
        }
    }
}

usingusingusing

  • 每次去玩某事(或创建一个对象)时,检查是否可以使用using语句

  • 如果您希望文件存在,请进行尽职调查并检查文件是否存在

  • 如果要连接路径和文件名,请使用Path.Combine()

  • GetPixel非常慢,因此最好使用LockBits

  • 当您可以使用格式说明符$"{imageNumber:D5}.jpg"时,为什么要使用大量if来添加0

说实话,我不确定这是否可以解决您的问题,但是无论

using (var stream = new FileStream(@"meme.txt", FileMode.OpenOrCreate, FileAccess.Write))
{
   using (var writer = new StreamWriter(stream))
   {
      for (var imageNumber = 0; imageNumber <= 7600; imageNumber++)
      {
         var dir = @"C:\Users\Admin\source\repos\badapple\ayy\ba\ba";

         var fileName = Path.Combine(dir, $"{imageNumber:D5}.jpg");

         if (File.Exists(fileName))
         {
            throw new FileNotFoundException($"Woah, what now : {fileName}");
         }

         using (var image = new Bitmap(fileName, true))
         {
            for (var y = 0; y < image.Height; y++)
            {
               for (var x = 0; x < image.Width; x++)
               {
                  var pixel = image.GetPixel(x, y);
                  writer.Write(pixel.R > 200 ? "#" : " ");
               }

               writer.WriteLine();
            }
         }
      }
   }
}

如果仍然有问题,请找出导致该问题的文件,然后检查它是否实际上是映像并已加载。 我的蜘蛛般的感觉告诉我它不是

暂无
暂无

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

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