2012-03-07 4 views
3

친애하는 전문가를 저장하는 동안 내가 코드가 잘 작동하지만 난 ImageFormat로 변경하면됩니다 Image.format.jpeg을 사용하는 경우gdi +에서 일반 오류가 발생했습니다. 이미지를 저장하는 동안 오류가 점점 오전 이미지

ClsImageManager objImgManager = new ClsImageManager(); 
    Bitmap ImageBitmap = objImgManager.GetBitmapFromBytes(ImageData); 
    Response.ContentType = "image/tiff"; 
    ImageBitmap.Save(Response.OutputStream, ImageFormat.Tiff); 
    ImageBitmap.Dispose(); 
    Response.End(); 

을 다음과 같이 코드입니다. 티파니 그러면 오류가 발생합니다 gdi +에서 일반 오류가 발생했습니다.

+0

이 문제를 추적하는 데 걸리는 시간은 실제 메시지를 보지 못했습니다. 내 서버에는 업로드와 관련된 디스크 공간에 대한 할당량이 있었기 때문에 이미지를 저장할 수 없어 gdi + 예외가 발생했습니다. –

답변

4

당신은 GDI는/GDI + (System.Drawing 네임 스페이스) 공식적으로 ASP.NET에서 지원되지 않는 점에 유의해야한다 - http://msdn.microsoft.com/en-us/library/system.drawing.aspx의 "주의 사항"을 참조하십시오.
WIC 대신 GDI +를 사용해야합니다 (http://weblogs.asp.net/bleroy/archive/2009/12/10/resizing-images-from-the-server-using-wpf-wic-instead-of-gdi.aspx 참조)

많은 사람들이 ASP.NET에서 GDI +를 성공적으로 사용했다고합니다. 아마도 이미지를 메모리 스트림 (또는 파일)에 저장 한 다음 저장된 이미지를 응답에 쓰려고 시도해야합니다. 자세한 내용은 다음 링크를 참조하십시오. http://www.west-wind.com/weblog/posts/2006/Oct/19/Common-Problems-with-rendering-Bitmaps-into-ASPNET-OutputStream

다른 해결 방법은 사용자 계정과 관련 될 수 있습니다. 분명히 GDI/GDI +는 장치 컨텍스트 (화면, 프린터 등)에 바인딩되어 있으며 서비스 계정으로는 사용할 수 없습니다. 따라서 도움이되는지 여부에 관계없이 일부 일반 사용자 계정에서 ASP.NET 코드를 실행 해 볼 수 있습니다.

2

이미지 저장을 명시 적으로 인코딩해야 할 수도 있습니다.
Image.Save의 MSDN 설명서의 맨 아래에있는 코드 예제를 참조하십시오.
Image.Save Method (String, ImageCodecInfo, EncoderParameters)
동일한 작업을 저장에 적용 할 수 있습니다.

그러나 이미지를 저장하기 전에 objImgManager가 이미지를 저장하는 버퍼를 삭제할 수도 있습니다.

Bitmap ImageBitmap = objImgManager.GetBitmapFromBytes(ImageData); 

당신은이 작업을 수행하여 이미지의 복사본을 만들어이 문제를 해결 얻을 수 있습니다 :

Bitmap ImageBitmap = new Bitmap(objImgManager.GetBitmapFromBytes(ImageData)); 
+0

이 해결 방법은 TIFF를 JPG로 변환하는 동안 내 GDI + 일반 오류 문제를 해결했습니다. 고맙습니다! – Tomino

관련 문제