2012-09-11 26 views
1

在使用真棒ImageResizing組件時,我嘗試上傳和讀取大小約爲100MB的圖像時遇到「內存不足」錯誤。它可能看起來很大,但我們是很多人需要提供這種尺寸圖像的打印機。ImageResizer在大圖像上崩潰

的失敗代碼的行是:

ImageResizer.ImageBuilder.Current.Build(使用Server.Mappath(strImagePath),使用Server.Mappath(strThumbPath),新ResizeSettings( 「maxheight =」 + 「150」 + 「& maxwidth =」+「238」));

這可能是GDI本身失敗,但除檢測錯誤發生並讓用戶知道之外,是否有任何解決方法?

預先感謝 鋁

+0

圖像的文件大小(jpg/png/etc ..)與其分辨率無關和顏色深度是。在32bit下的1000x1000圖像將需要大約4兆像素的RAM,僅用於未壓縮的原始像素數據。你說你是打印機,所以你最有可能處理更大的圖像。 –

+0

感謝您的回覆。你怎麼能根據尺寸計算出需要的內存?當然大約。我一直在測試的圖像是19000 X 13000,真是太棒了! – higgsy

+0

對於32位圖像,19000 * 13000 *(bit_depth/8)= 942兆字節。 –

回答

3

甲100MB JPEG解壓縮通常以位圖形式圍繞8千兆字節。你唯一的機會是獲得16 GB的內存,並以64位模式運行該進程。

另外,你可以嘗試libvips - 它是專爲巨大的圖像文件。目前還沒有.NET包裝,但我真的想做一個並獲得一些ImageResizer集成!當然,如果沒有任何人對資金感興趣,它可能不會發生一段時間......

+0

嗨計算機語言學家 - 感謝您的回覆。有趣的是,我發佈的代碼有時可以在一臺只有4GB內存的機器上運行 - 這很奇怪嗎? – higgsy

+0

不是。如果圖像使用的是近乎最大的質量,則可能只有3GB左右的位圖形式,因此成功取決於您的內存空間是多麼分散,以及它有多少空閒。這種工作需要龐大,毫無碎片的公羊。 –