問題描述的確定:位圖保存JPEG failled但PNG是因爲意見財產
當我保存的位圖與JPEG格式模式的JPEG文件,一個GDI拋出異常。但是當我用PNG格式保存它時,它可以被成功保存。
快速重新創建:
請圖像以.jpg文件從broswer保存。點擊這裏:IncorrectImage,CorrectImage(實際上,在我們的應用中,我們要求在飛行中的圖像,然後將圖像保存爲JPEG。)
使用下面的代碼,看看異常:
string newFile = @"D:\Temp\newImage.jpg"; var newBitmap = Image.FromFile(@"D:\Temp\IncorrectImage.jpg"); newBitmap.Save(newFile,System.Drawing.Imaging.ImageFormat.Jpeg);
我發現了什麼:
了深刻的調查後,我發現了問題的根源是從原始圖像的評論屬性。當我刪除屬性值時,錯誤消失。此外,我只是將圖像的評論值的值複製到記事本,然後粘貼回來,圖像可以保存到一個新的圖像與上面的代碼,圖像的大小甚至更大!
所以,我猜這個評論屬性可能包括一些敏感或不正確的charector保存到JPEG文件時。人們可以提供我們對這些評論的一些見解嗎?
感謝先進。
更多的嘗試:
我試試下面的代碼:
//foreach (var item in newBitmap.PropertyItems)
//{
// if (item.Id == 37510)
// {
// item.Value = null;
// item.Len = 0;
// }
//}
newBitmap.RemovePropertyItem(37510);
newBitmap.Save(newFile, System.Drawing.Imaging.ImageFormat.Jpeg);
如果刪除屬性項,那麼newimage可以保存成功。但是,如果我只是將它的值設置爲null,就像註釋掉代碼一樣,異常仍然會拋出。
請大家幫幫我:
- 爲什麼圖像尺寸較大(原大小爲48K,切斷後重新粘貼它是關於78K),當我剛清理意見,然後粘貼相同的值回。這可能是一個錯誤嗎?
- 爲什麼在清除註釋並將相同的值粘貼回來後,圖像可以成功保存?剪貼板是否過濾了一些無效的字符?
- 即使設置了註釋屬性值爲空,爲什麼圖像仍然無法保存?但如果我刪除該屬性,它可以工作,就像之前我嘗試?
希望你能幫助我找出問題的根源。