VS 2008, .NET 3.5 타겟 MVC.NET 앱이 있습니다. IIS 7을 사용하여 Windows 7에서 개발 중이지만 .NET 3.5 SP1이 설치된 Windows Server 2003 환경에 배포합니다..NET 3.5 웹 앱 - 즉석에서 C# 이미지 스케일링 - 배포 된 사이트와 개발 사이트의 품질이 낮습니다.
요청 된 해상도로 데이터베이스에서 이미지를 반환하고 System.Drawing 및 System.Drawing.Imaging API를 사용하여 즉석에서 PNG로 변환하는 이미지 크기 조정 작업이 있습니다.
배포 된 사이트를 통해 제공되는 이미지는 개발중인 이미지의 크기/품질의 1/2입니다. 원본 이미지는 동일하지만 배포 된 사이트를 통해 요청하면 154.34kb의 6.35kb PNG가 생성되지만 개발시 154x200의 12.28kb PNG가됩니다.
의심되는 점은 Windows 서버의 3.5 SP1에서 .NET 그래픽 라이브러리에 약간의 차이가 있습니까? 내 앱은 명시 적으로 .NET 3.5 런타임을 대상으로합니다.
Image image = Image.FromStream(new MemoryStream(document.content));
MemoryStream memStream = new MemoryStream();
Bitmap bmp = new Bitmap(image, (int)width, (int)height);
ImageFormat format = ImageFormat.Png;
string mimeType = document.mimeType;
if(document.mimeType == "image/png")
; // format = ImageFormat.Png;
else if (document.mimeType == "image/jpeg")
format = ImageFormat.Jpeg;
else if (document.mimeType == "image/gif")
format = ImageFormat.Gif;
else if (document.mimeType == "image/tiff")
{
format = ImageFormat.Png; // convert tiff to png
mimeType = "image/png";
}
bmp.Save(memStream, format);
HTTP 헤더는 다음과 같습니다 개발 : 캐시 제어 개인 콘텐츠 형식 이미지/PNG 서버 Microsoft-IIS/7.5 X-AspNetMvc - 버전 2.0 X-ASPNET-버전 2.0.50727 X-전원-으로 ASP.NET 날짜 2010년 3월 5일 (금) 그리니치 표준시 19시 59분 50초 12,574
생산 콘텐츠 길이 : 날짜 2010년 3월 5일 (금) 그리니치 표준시 20시 02분 58초 서버 Microsoft-IIS /6.0 X가 강화 된-으로 ASP.NET X-ASPNET-버전 2.0.50727 X-AspNetMvc - 버전 2.0 캐시 제어 개인 콘텐츠 형식 이미지/PNG 콘텐츠 길이 6514
코드를 게시 할 수 있습니까? 추측에서 나는 당신이 색깔을 잃어 버리고 있다고 말할 것입니다. 아마도 dev는 32 비트 색상이고 prod는 16 비트입니다. –
@Matthew : 요청 당 코드를 추가했습니다. 색상까지는 서버에 연결된 디스플레이가 없습니다. RDP를 통해 로그인합니다. – codenheim
너희들 말이 맞았다. 내 코드를 사용하여 다시 작성했습니다 : 비트 맵 bmp = 새 비트 맵 (destWidth, destHeight, PixelFormat.Format32bppArgb); 그래픽 g = Graphics.FromImage (bmp); g.InterpolationMode = InterpolationMode.HighQualityBicubic; 내가 생각하기에 (일종의 쓰기를 한 번만하면 ... ...) 기본값 차이가 있습니다. 차이점을 알고 싶습니다. .NET은 여기 저기에서 동일하게 작동해야합니다. 배포 된 사이트의 차이점을 파악하기 위해 더 조사 할 것입니다. – codenheim