C# 使用C将位图数组保存到单独的文件#

C# 使用C将位图数组保存到单独的文件#,c#,arrays,bitmap,save,typeinitializeexception,C#,Arrays,Bitmap,Save,Typeinitializeexception,我一直在保存System.Drawing.Bitmap类型的数组,将每个位图保存到单独的文件中。 我有一个数组“调查”。此数组存储多个双重类型的列表。 对于每个列表,我想创建一个位图,然后将其保存为bmp文件。 行raport[i].Save(Path.Combine(myfilepath,nets[i]+“.bmp”)返回类型初始化异常,我不知道为什么。 片段nets[i]是一个具有预期文件名的字典(int,string) public void save_results() {

我一直在保存
System.Drawing.Bitmap
类型的数组,将每个位图保存到单独的文件中。 我有一个数组“调查”。此数组存储多个双重类型的列表。 对于每个列表,我想创建一个位图,然后将其保存为bmp文件。 行
raport[i].Save(Path.Combine(myfilepath,nets[i]+“.bmp”)返回类型初始化异常,我不知道为什么。
片段
nets[i]
是一个具有预期文件名的字典(int,string)

public void save_results()
    {
        System.Drawing.Bitmap[] raport = new System.Drawing.Bitmap[survey.Length];

        for (int i = 0; i < survey.Length; i++)
        {
            raport[i] = new System.Drawing.Bitmap(survey[i].Count, 1000);

            for (int x = 0; x < survey[i].Count; x++)
                for (int y = 0; y < 1000; y++)
                    raport[i].SetPixel(x, y, Color.FromArgb(255, 255, 255));

            for (int x = 0; x < survey[i].Count; x++)
                raport[i].SetPixel(x, (int)(1000 - Math.Floor(survey[i][x] * 1000) >= 1000 ? 999 : 1000 - Math.Floor(survey[i][x] * 1000)), Color.FromArgb(0, 0, 0));

    raport[i].Save(Path.Combine(myfilepath, nets[i] + ".bmp"));
        }
    }
public void保存结果()
{
System.Drawing.Bitmap[]raport=new System.Drawing.Bitmap[survey.Length];
对于(int i=0;i=1000?999:1000-数学地板(测量[i][x]*1000)),Color.FromArgb(0,0,0));
raport[i].Save(Path.Combine(myfilepath,nets[i]+“.bmp”);
}
}

最后,问题与变量“myfilepath”有关。 变量是从少数几个文件路径“编译”的,所有这些字符串都应该是
静态的

    public static string mydoc= Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    public static string myfilepath_p = Path.Combine(mydoc, "Demeter");
    public static string myfilepath= Path.Combine(myfilepath_p, "regresja_liniowa");
最初,引用代码中使用的“final”变量只有
static
,这是导致错误的原因


其余代码工作正常。

最后,问题与变量“myfilepath”有关。 变量是从少数几个文件路径“编译”的,所有这些字符串都应该是
静态的

    public static string mydoc= Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    public static string myfilepath_p = Path.Combine(mydoc, "Demeter");
    public static string myfilepath= Path.Combine(myfilepath_p, "regresja_liniowa");
最初,引用代码中使用的“final”变量只有
static
,这是导致错误的原因


其余代码工作正常。

您需要查看TypeInitializationException的InnerException以获取更多信息。请参阅。引擎盖下位图。保存特定编解码器的调用(请参阅System.Drawing.ImageFormat)。我认为问题在于编解码器初始化。您可以尝试显式指定ImageFormat。另外,stacktrace也会有帮助。我曾经遇到过一次保存多个文件的类似问题,我认为这是因为保存不同步。我不知道情况是否如此。有人能证实吗?我想我不是用c#编写代码的,但我想文件保存的处理方式可能类似。保存一个文件可能需要相对较长的时间,但这只影响HDD,因此程序的其余部分可以继续。如果它在c中是异步的,这对我来说是有意义的。您需要查看TypeInitializationException的InnerException以获得更多信息。请参阅。引擎盖下位图。保存特定编解码器的调用(请参阅System.Drawing.ImageFormat)。我认为问题在于编解码器初始化。您可以尝试显式指定ImageFormat。另外,stacktrace也会有帮助。我曾经遇到过一次保存多个文件的类似问题,我认为这是因为保存不同步。我不知道情况是否如此。有人能证实吗?我想我不是用c#编写代码的,但我想文件保存的处理方式可能类似。保存一个文件可能需要相对较长的时间,但这只影响HDD,因此程序的其余部分可以继续。如果它在c#中也是异步的,那么对我来说也是有意义的