2009-07-28 5 views
0

업로드 된 이미지의 크기를 변경하려고합니다. 온라인에서 찾은 것으로부터, 원하는 크기로 새 이미지를 만든 다음 그래픽을 사용하여 이미지를 더 작은 이미지로 그립니다. Nikon D90 카메라의 이미지를 제외하고 업로드 된 모든 이미지에서 효과가있는 것 같습니다. 이러한 이미지를 업로드하고 크기를 조정하려고 할 때마다 아래에 표시된 줄에 OutOfMemoryException이 발생합니다. 누구든지 내가 뭘 잘못하고 있는지 말해 줄 수 있어요.OutOfMemoryException을 유발하는 DrawImage

'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

+0

또한 예외는 DrawImage에서 FromFile이 아닌 – BLeB

+0

에서 발생합니다. Paint.Net에서 이미지를 열고 다시 저장하기 만하면됩니다. 최종 사용자가이 작업을 수행하는 것을 원하지 않으면 앱에서해야합니다. DrawImage 문서는 그렇게 말하지 않지만 FromFile과 동일한 문제가 있다고 생각합니다. –

0

나는 변수를 조정하여 이미지가 올바르게 설정되어있는 경우이 코드의 의지가 잘 작동 생각합니다.

크기가 0 인 imace 또는 사각형이 있습니까 ??

+0

이것은 처음에 생각한 것이지만 새로운 이미지 너비와 높이가 0이 아닌지 확인했습니다. 내가 업로드 한 다른 이미지는 정상적으로 작동합니다. – BLeB

관련 문제