none
bitmap.Save 在 GDI+ 中發生泛型錯誤。 RRS feed

  • 問題

  • 大家好

    我載了張圖後對它進行了變化後

    bitmap.Save,然後馬上將它顯示在pictureBox

    可以正常執行

    但是在試第二次時bitmap.Save 卻會出現"在 GDI+ 中發生泛型錯誤。"

    請問這個問題該如何解決??

    以下是我的程式碼

    private void button37_Click(object sender, EventArgs e)
            {
                
                Bitmap bitmap_test = null;
                
                            
                OpenFileDialog file = new OpenFileDialog();
                            
                if (file.ShowDialog() != DialogResult.Cancel)
                {
                    
                    this.textBox2.Text = file.FileName;
                                    
                    bitmap_test = new Bitmap(textBox2.Text);
    
                    Bitmap bitmap = new Bitmap(bitmap_test.Width, bitmap_test.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
                    for (int i = 0; i < bitmap_test.Width; i++)
                    {
                        for (int j = 0; j < bitmap_test.Height; j++)
                        {
                            Color temp = bitmap_test.GetPixel(i, j);
                            bitmap.SetPixel(i, j, temp);
                        }
                    }
                    
                    bitmap.Save("bit24.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
                    
                    pictureBox3.Image = Image.FromFile("bit24.bmp");                                       
                        
                                  
                }
                 
            }


    2015年6月2日 上午 06:54

解答

  •                 pictureBox3.Image = bitmap;
    直接顯示記憶體在pictureBox,不要讀圖檔,就可以了吧...

    • 已標示為解答 max79411 2015年6月3日 上午 06:08
    2015年6月2日 上午 09:10
  • 在 .Net 不主動釋放的話,會持續占用到 process 結束。

    所以第一次存的時候,已經獨佔此資源,第二次存的時候就會發生錯誤。

    這狀況不只在 Bitmap ,在 FileStream 也是ㄧ樣。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 max79411 2015年6月3日 上午 06:08
    2015年6月2日 下午 04:05

所有回覆

  • 最後面加一句

    bitmap = null;

    把資源釋放掉試試看。

    =======================

    我很久很久之前有個專案也有這樣的錯誤,不過當初是伺服器上的資料匣權限沒有開放導致的 你可以參考看看。

    2015年6月2日 上午 07:19
  • 還是會發生在 GDI+ 中發生泛型錯誤。
    2015年6月2日 上午 07:25
  • 還是會發生在 GDI+ 中發生泛型錯誤。

    那換個檔名呢?!?!

    "bit24.bmp" ---->  "bit25.bmp"

    2015年6月2日 上午 08:06
  •                 pictureBox3.Image = bitmap;
    直接顯示記憶體在pictureBox,不要讀圖檔,就可以了吧...

    • 已標示為解答 max79411 2015年6月3日 上午 06:08
    2015年6月2日 上午 09:10
  • 在 .Net 不主動釋放的話,會持續占用到 process 結束。

    所以第一次存的時候,已經獨佔此資源,第二次存的時候就會發生錯誤。

    這狀況不只在 Bitmap ,在 FileStream 也是ㄧ樣。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 max79411 2015年6月3日 上午 06:08
    2015年6月2日 下午 04:05