2017-02-08 10 views
1

最近私は自分のプロジェクトで作業を始めましたが、残念ながら問題があります。私は1つのイメージから5x5のsqauresを取得し、それらの平均色を数えてから別のビットマップに円を描きたいので、このような結果を得ることができますhttp://imageshack.com/a/img924/9093/ldgQAd.jpgC# - ファイルにビットマップを保存できません

私はそれを行ったが、グラフィックスオブジェクト。 Stackから多くのソリューションを試しましたが、どれも私のために働いていませんでした。

マイコード:

//GET IMAGE OBJECT 
Image img = Image.FromFile(path); 
Image newbmp = new Bitmap(img.Width, img.Height); 
Size size = img.Size; 

//CREATE NEW BITMAP WITH THIS IMAGE 
Bitmap bmp = new Bitmap(img); 

//CREATE EMPTY BITMAP TO DRAW ON IT 
Graphics g = Graphics.FromImage(newbmp); 

//DRAWING... 

//SAVING TO FILE 
Bitmap save = new Bitmap(size.Width, size.Height, g); 
g.Dispose(); 
save.Save("file.bmp", System.Drawing.Imaging.ImageFormat.Bmp); 

ファイル 'file.bmpただ白紙画像です。私は間違って何をしていますか?

+0

あなたは 'g.Dispose();を試しましたか? 'save.Save(" file.bmp "、System.Drawing.Imaging.ImageFormat.Bmp)の後に'? –

+0

結果として同じ黒いイメージがまだ残っています。/ –

答えて

1

まず、Graphicsオブジェクトをターゲットビットマップから作成する必要があります。

Bitmap save = new Bitmap(size.Width, size.Height) ; 
Graphics g = Graphics.FromImage(save); 

第二に、保存(前に、あなたのグラフィックをフラッシュ)

g.Flush() ; 

そして最後に、廃棄()保存(後)(または使用してブロックを使用)

save.Save("file.bmp", System.Drawing.Imaging.ImageFormat.Bmp); 
g.Dispose(); 

それは与えるべきですあなたのようなもの:

Image img = Image.FromFile(path); 
Size size = img.Size; 

//CREATE EMPTY BITMAP TO DRAW ON IT 
using (Bitmap save = new Bitmap(size.Width, size.Height)) 
{ 
    using (Graphics g = Graphics.FromImage(save)) 
    { 
     //DRAWING... 

     //SAVING TO FILE 
     g.Flush(); 
     save.Save("file.bmp", System.Drawing.Imaging.ImageFormat.Bmp); 
    } 
} 
+1

'using'は通常Dispose()への明示的な呼び出しよりも優れています。 –

+0

Omg、あなたを愛して<3これはとてもうまくいった:D –

関連する問題