.NET 3.5 Web应用程序 - 即时C#映像扩展 - 部署站点与开发相比质量较低

时间:2010-03-05 19:05:09

标签: .net asp.net clr

我有一个VS 2008,.NET 3.5定位的MVC.NET应用程序。我正在使用IIS开发Windows 7,但部署到安装了.NET 3.5 SP1的Windows Server 2003环境。

我们有一个图像缩放操作,可以按照请求的分辨率从数据库中返回图像,并使用System.Drawing和System.Drawing.Imaging API即时转换为PNG。

通过部署的站点提供的图像是开发中的图像的大小/质量的1/2。源图像是相同的,但通过部署的站点请求导致6.35 kb的154x200 PNG,但在开发时它会产生12.28 kb的154x200 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-Version 2.0   X-AspNet-Version 2.0.50727   X-Powered-By ASP.NET   2010年3月5日星期五19:59:50 GMT   内容长度12574

生产:   2010年3月5日星期五20:02:58 GMT   服务器Microsoft-IIS / 6.0   X-Powered-By ASP.NET   X-AspNet-Version 2.0.50727   X-AspNetMvc-Version 2.0   缓存控制私有   内容类型图像/ png   内容长度6514

2 个答案:

答案 0 :(得分:3)

也许你需要设置像素格式或其他只使用默认值的选项:http://www.codeproject.com/KB/GDI-plus/imageresize.aspx

答案 1 :(得分:0)

默认值可能不同,这有点奇怪。尝试明确指定其他人所说的颜色深度。

还可以使用旋转技巧删除缩略图。 (将图像翻转180度两次..NET在旋转时剥离缩略图。)