2012-03-07 4 views
1

HTTP 응답에서 동적으로 생성 된 이미지의 콘텐츠 길이를 쉽게 설정하는 방법을 찾고 있습니다.ASP.NET에서 동적으로 생성 된 이미지의 콘텐츠 길이를 설정하십시오.

Response.AddHeader("Content-Length", Response.OutputStream.Length()) 

와 컨텐츠 길이를 설정하는 것을 시도

Response.ContentType = "image/jpeg"; 
Response.Clear(); 
Response.BufferOutput = true; 
... 
Bitmap bmp = new Bitmap(width, height, PixelFormat.Format24bppRgb); 
... 
bmp.Save(Response.OutputStream, ImageFormat.Jpeg); 
Response.Flush(); 

예기치 않은 결과를 제공합니다.

또한 파일을 다른 스트림 (예 : MemoryStream)에 복사하고 다시 출력 스트림에 복사하지 않습니다.

아이디어가 있으십니까?

감사합니다.

+1

HTTP 서버 클래스가 청크 인코딩을 지원합니까? 그렇다면 사용하고 크기를 설정할 필요가 없으며 연결 유지를 허용합니다. –

+0

@ Eden, 이미지를 mem-stream에 저장하고 콘텐츠 길이를 측정해야합니다. OTOH, Reponse.WriteFile (또는 TransmitFile)을 사용하여 디스크에서 이미지를 누른 다음 이미지를 제공하십시오. 이 방법은 동일한 이미지를 여러 번 (본질적으로 디스크에 캐싱) 여러 사용자에게 제공해야하는 경우에만 의미가 있습니다. – VinayC

+0

@DavidSchwartz - 설명서에서 응답 헤더에이 메시지가 표시되지 않지만 IIS 7.5에서 청크 인코딩을 지원하는 것으로 보입니다. 나는이 문제를 조사해야 할 것이다. 감사! – Eden

답변

4
long bmpByteSize; 
using (var ms = new MemoryStream(estimatedLength /* you can instantiate without this parameter at all */)) 
{ 
    bmp.Save(ms, ImageFormat.Png); 
    bmpByteSize= ms.Length; 
} 
+0

내가 피하려고하는 바로 그 것. – Eden

+0

당신은해야합니다. 또는 @David Schwartz의 의견을 참조하십시오. 너는 그에게 대답하지 않았다. –

+0

아니요 많은 옵션이 있습니다. 예를 들어 필자가 필요로하는 HttpResponse 클래스를 작성할 수 있습니다. – Eden

관련 문제