2011-09-17 3 views
0

JPG 원본 이미지에서 Bitmap.Save(MemoryStream, ImageFormat.Gif)을 수행하고 있지만 MemoryStream의 MIME 형식을 확인하면 이미지가 저장되는데 여전히 image/jpeg이됩니다. 반환 된 이미지의 품질이 크게 떨어지는 것으로 판단하여 실제 변환이 수행되고 있음을 확신하지만 동시에 MIME 유형도 올바르게 읽혀 졌음을 확신합니다.Bitmap.Save (Stream, ImageFormat)는 MIME 형식을 변경하지 않습니다

내 코드에 문제가 있거나 Bitmap.Save의 경우 정상입니까?

+0

'MemoryStream'은 바이트 스트림입니다. 어떤 MIME 유형 속성을 참조하고 있습니까? – BrokenGlass

답변

1

가정 당신은 당신이 제공하는 데이터의 MIME 타입 설정 콘텐츠 형식 헤더를 설정해야이 ASP.NET/일반적으로 HTTP입니다 (이전의 질문에 의해 판단) :

Response.ContentType = "image/gif"; 

을 .NET 스트림에 저장된 비트 맵은 바이트 스트림이며 자체적으로 MIME 형식을 보유하지 않습니다.

+0

하드 코딩을 원하지 않으므로 interop 호출을 통해 스트림/바이트 []의 MIME 유형을 읽음으로써 ContentType을 설정하고 있습니다. 저장중인 비트 맵은 실제로 디스크의 원본 이미지에서 FileStream을 통해 초기화되며, MIME 형식을 저장한다고 생각합니다. 무슨 일이 일어나고있는 것은 같은 바이트 배열이 메서드에서 메서드로 옮겨지고, MIME 형식 (처음 256 바이트)을 저장하는 바이트 []의 부분이 변환 후에 영향을받지 않는다는 것입니다. – rafale

+0

@rafale : 이것은 오버 엔지니어링이라고 들립니다. 이미 ImageFormat.Gif를 전달한 Bitmap.Save()를 호출했습니다. - 그 전에 mime 유형을 설정할 수 있습니다. - 어쨌든 gif를 지정합니다. * – BrokenGlass

+0

그래, 내가 지금하고있는 일이야. MIME 유형이 반드시 파일/바이트 []의 일부는 아니며, 변환하려는 형식을 기반으로 수동으로 설정하는 것이 더 쉽다는 것을 알지 못했습니다. 내 부분에 오해. – rafale