在将带有图像(ASCII)的文本文件中的图像(.jpg)的信封写入信封时,遇到了“ System.ArgumentException”这样的问题。按照说明(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();
}
}
}
}
答案 0 :(得分:1)
using
,using
,using
每次您玩某事(或创建一个对象)时,都要检查是否可以使用using
语句
如果您希望文件存在,请进行尽职调查并检查文件是否存在
如果要连接路径和文件名,请使用Path.Combine()
GetPixel
非常慢,因此最好使用LockBits
当您可以使用格式说明符if
0
来添加$"{imageNumber:D5}.jpg"
。
说实话,我不确定这是否可以解决您的问题,但是无论如何您都比这个地方好得多
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();
}
}
}
}
}
如果仍然有问题,请找出导致问题的文件,然后检查它是否实际上是图像并已加载。我的蜘蛛般的感觉告诉我它不是