2009-07-28 114 views
0

我正在嘗試重新上傳圖片大小。從我在網上找到的內容來看,實現這一點的方法是創建一個您想要的大小的新圖像,然後使用圖形將圖像繪製爲較小的圖像。似乎適用於上傳的所有圖像,但尼康D90相機的圖像除外。每當我嘗試上傳並重新設置這些圖像的大小時,我都會在下面顯示的行中看到OutOfMemoryException。任何人都可以告訴我我做錯了什麼。DrawImage導致OutOfMemoryException

'Create the new image as a blank bitmap 
Dim resized As Image = New Bitmap(newWidth, newHeight) 

'Create a new graphics object from the new image 
Dim g As Graphics = Graphics.FromImage(resized) 

'Resize graphics object to fit onto the resized image 
g.DrawImage(originalImage, New Rectangle(0, 0, resized.Width, resized.Height)) <-- Exception 

g.Dispose() 

回答

2

你是如何載入圖像的? System.Drawing.Image.FromFile?根據.Net Developer Center,如果圖像文件損壞或格式GDI +無法識別,則會拋出OutOfMemoryException。

你可以在像Paint.Net這樣的圖像編輯程序中打開圖像嗎?如果是這樣,請將其保存爲JPEG或其他內容,並嘗試在應用程序中打開保存的程序。

如果解決了這個問題,原始圖像會有一些圖像編輯器可以處理的損壞或格式,但是DrawImage不能。您將不得不通過圖像編輯器傳遞破損的圖像來修復它們。您必須找到一個圖像編輯應用程序,其中包含可從您的應用程序調用的命令行或腳本界面。

+0

我正在使用FromFile。我得到了與FromStream相同的錯誤,但我猜測原因是一樣的。圖像將在Paint.Net中打開,如果我在Paint.Net中重新調整大小,然後上傳它們,它們就可以正常工作。這對我的最終用戶來說似乎是一個不必要的步驟。 BinaryReader解決方案涉及什麼? – BLeB 2009-07-29 17:27:24

0

我認爲這段代碼將正常工作,如果變量調整大小和 圖像設置正確。

你有一個零大小的想法或矩形?

+0

這是我第一次想到的,但我已經證實,新的圖像寬度和高度不是零。我已上傳的其他圖像正常工作。 – BLeB 2009-07-28 04:08:14

相關問題