|
分類:[C#]
使用言語はC#、環境はVisual Studio 2010です。 pictureBoxに描いた画像を保存した後、それを読み出し再度同じpictureBoxに描画したいと考えています。 サンプルコードがあるのでそのまま記述しました。 保存はできましたが、読み出しで開くときに 「'SystemIO IOException'のハンドルされていない例外がmscorlib.dllで発生しました。」 というコメントが出て、読み出し動作が止まります。 原因はどこにあるのでしょうか。 保存、読み出しのコードは下記の通りです。 よろしくお願いいたします。
private void File_Open_Click(object sender, EventArgs e) { Bitmap bmp = new Bitmap(pb1.Image); if(openFileDialog1.ShowDialog() == DialogResult.OK) { int x, y; BinaryReader br = new BinaryReader(new FileStream(openFileDialog1.FileName, FileMode.Open, FileAccess.Read)); x = 0; y = 0; while(true) { x = br.ReadInt32(); if(x == 999) break; y = br.ReadInt32(); bmp.SetPixel(x, y, Color.Black); } } pb1.Image = bmp; }
private void File_Save_Click(object sender, EventArgs e) { int i, j, nx, ny, rr, bb; Color col;
if(saveFileDialog1.ShowDialog() == DialogResult.OK); { BinaryWriter bw = new BinaryWriter(new FileStream(saveFileDialog1.FileName, FileMode.Create, FileAccess.Write)); nx = pb1.Width; ny = pb1.Height; Bitmap bmp = new Bitmap(pb1.Image);
for( j = 0; j < ny; j++) for( i = 0; i < nx; i++) { col = bmp.GetPixel(i,j); rr = col.R; //赤成分を調べる bb = col.B; //青成分を調べる if(rr == 0 && bb == 0) //黒画像ならば { bw.Write(i); //書き込む bw.Write(j); } } bw.Write(999); bw.Write(999); } }
|