我需要編輯(增加高度)圖像。 該文件大部分爲5000 * 4000。當我創建一個大尺寸的bmp並在bmp實例上調用Graphics.DrawImage方法時,我發現內存已經達到峯值水平。使用大型位圖會導致內存不足異常
如何擺脫內存不足異常?有沒有辦法在C#中使用大型位圖?
我需要編輯(增加高度)圖像。 該文件大部分爲5000 * 4000。當我創建一個大尺寸的bmp並在bmp實例上調用Graphics.DrawImage方法時,我發現內存已經達到峯值水平。使用大型位圖會導致內存不足異常
如何擺脫內存不足異常?有沒有辦法在C#中使用大型位圖?
這取決於你的應用程序特定requeirements,它不是從上你的帖子很清楚,但generaly,大的媒體文件(圖片,聲音,視頻)工作,我覺得真的很不錯的解決方案是
在內存映射文件中將yuor映像保存在磁盤上,並通過免費的yuor RAM儘可能地從大量數據中調整磁盤的大小,這些數據可能不需要快速訪問(至少在那一刻)
希望這會有所幫助。 此致敬禮。
這並不容易.net –
這比以前更容易了,相信我,因爲現在你已經包裝了.NET類。 (僅適用於.NET Framework 4.0) – Tigran
OOM從不*由RAM耗盡引起。位圖已經使用MMF,創建更多隻是讓您更快地用完虛擬內存。 –
問題是操作所需的大量內存。你的需求約爲千兆字節,所以解決方案可以是使用流並以塊爲單位處理文件。
或者最好的選擇是使用它的一些第三方庫。下面是一些對.NET
也看看這太問題。
https://stackoverflow.com/questions/158756/what-is-the-best-image-manipulation-library
你能提供一些代碼嗎? – VMAtm
它的一個內存問題檢查這個http://stackoverflow.com/questions/5801652/bitmap-while-assigning-height-width-crashes/5802113#5802113 – V4Vendetta
我想你有同樣的問題,當你試圖採取其他人有超過一個GB的內存爲.dll。可能的答案可能是使用流並以塊處理文件。 –