
我可以毫無問題地打開較小的 tif,但這些 100+MB 的 tif 無法在 Paint.NET 中開啟。我不認為這是內存問題,因為其他軟體可以毫無問題地打開(IrfanView、XNViewPortable)。這是軟體限制嗎?
“開啟檔案時出現未指定的錯誤。”
http://dl.dropbox.com/u/1156285/PaintDotCrash_OpenBifTif.avi
我在 XP SP3 上使用 Paint.NET v3.5.5(最終版本版本 3.55.3767.28608)。
更新:
我認為喬爾·科霍恩的答案是在正確的軌道上。我將圖像轉換為黑白圖像,檔案大小略低於 5MB。然後嘗試打開並再次收到錯誤。
使用原始版本,我嘗試了各種方法,最終發現如果我將像素從 6000x6000 減少到 5000x5000,我可以在 Paint.NET 中開啟圖像(甚至是 24 位元顏色)。
答案1
聽起來您遇到了 OutOfMemory 異常。 .Net OutOfMemory 異常有點誤導。當您用完時,更常見的是看到此異常地址空間,這與物理記憶體略有不同。這意味著檢查任務管理器以查看使用了多少記憶體之類的事情可能無法幫助您追蹤問題。
相反,該問題可能是 Paint.Net 中的錯誤造成的,例如 .Net 運行時將圖像的某些部分放置在稱為「大物件堆」的東西上。然後,檔案以這樣的方式載入:同一組記憶體被創建和銷毀多次,也許每次都會變得更大一些。垃圾收集器無法很好地釋放或壓縮大物件堆中的位址空間(即使實體記憶體已釋放或分頁),因此突然出現 OutOfMemory 異常。
解決方案是 Microsoft 更改 .Net 運行時相對於 LOH 的行為,以便它可以在某些情況下(可能根據請求,或在拋出 OutOfMemory 異常之前)進入並壓縮 LOH,或者Paint.Net 程式修復其載入文件的方式,以便正確增長導致問題的任何現有資料結構,而不是一遍又一遍地重新創建它。
答案2
像這樣的檔案在記憶體中的儲存方式會影響其所需的記憶體量。其他應用程式可能更節省記憶體。
根據您的描述,聽起來 Paint.NET 確實記憶體不足。您可以嘗試在嘗試開啟檔案時開啟工作管理員,以查看記憶體使用量是否增加。
答案3
它可能正在嘗試分配連續的記憶體區塊來讀取文件,請嘗試關閉盡可能多的應用程序,然後重試打開它。