2010-03-05 4 views
3

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

+1

코드를 게시 할 수 있습니까? 추측에서 나는 당신이 색깔을 잃어 버리고 있다고 말할 것입니다. 아마도 dev는 32 비트 색상이고 prod는 16 비트입니다. –

+0

@Matthew : 요청 당 코드를 추가했습니다. 색상까지는 서버에 연결된 디스플레이가 없습니다. RDP를 통해 로그인합니다. – codenheim

+1

너희들 말이 맞았다. 내 코드를 사용하여 다시 작성했습니다 : 비트 맵 bmp = 새 비트 맵 (destWidth, destHeight, PixelFormat.Format32bppArgb); 그래픽 g = Graphics.FromImage (bmp); g.InterpolationMode = InterpolationMode.HighQualityBicubic; 내가 생각하기에 (일종의 쓰기를 한 번만하면 ... ...) 기본값 차이가 있습니다. 차이점을 알고 싶습니다. .NET은 여기 저기에서 동일하게 작동해야합니다. 배포 된 사이트의 차이점을 파악하기 위해 더 조사 할 것입니다. – codenheim

답변

0

기본값은 다소 다를 수 있습니다. 다소 기묘합니다. 다른 사람이 말했듯이 명시 적으로 색상 깊이를 지정하십시오.

또한 미리보기 이미지를 제거하려면 회전 트릭을 수행하십시오. (이미지를 180도 두 번 뒤집기. 닷넷은 회전시 축소판을 제거합니다.)

+0

트릭을 필요로하지 않는다. 이것들은 우리가 제어하는 ​​원본이지만, 팁을 주셔서 감사합니다. – codenheim

관련 문제