2016-12-16 11 views
1

System.Drawing.Bitmapタイプの配列を保存する際にスタックされています。各ビットマップはファイルを区切ります。 私は配列「調査」を持っています。この配列は、double型の複数のListを格納します。 各リストについては、ビットマップを作成し、それをbmpファイルとして保存します。 ラインraport[i].Save(Path.Combine(myfilepath, nets[i] + ".bmp"));戻りTypeInitializationException - と私はなぜを知らない。 ピースnets[i]は、予想されるファイル名の辞書(int、string)です。ビットマップの配列をC#でファイルを別々に保存する

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")); 
     } 
    } 
+3

詳細情報を取得するには、TypeInitializationExceptionのInnerExceptionを表示する必要があります。 [ここ](http://stackoverflow.com/a/12425381/5095502)を参照してください。 – Quantic

+0

Bitmap.Saveは特定のコーデックを要求します(System.Drawing.ImageFormatを参照)。私は問題がコーデックの初期化にあると思う。明示的にImageFormatを指定しようとすることができます。また、stacktraceが役に立ちます。 –

+0

一度に複数のファイルを同時に保存するのと同じような問題がありました。私は、保存が同期していなかったためだと思います。これが当てはまるかどうかわかりません。誰かが確認できますか? 私はC#でコーディングしていなかったと思いますが、ファイルの保存は同様に扱えるかもしれません。ファイルを保存するには比較的長い時間がかかるかもしれませんが、これはHDDだけに影響するので、残りのプログラムは続行できます。もしそれがCでもあまりにも非同期なら#私には意味がある – Jacopo

答えて

0

最後に、問題は変数 "myfilepath"に関連付けられていました。 変数は、いくつかのファイルパスから「コンパイル」だった - そしてそれらの文字列のすべてがstaticされている必要があります:もともと

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"); 

、引用コードで使用される唯一の「最終」変数には、エラーの原因を、staticました。

その他のコードは正常に動作しました。

関連する問題