Веб-приложение .NET 3.5 - масштабирование изображения C # на лету - более низкое качество развернутого сайта по сравнению с разработкой - PullRequest
3 голосов
/ 05 марта 2010

У меня VS. 2008, .NET 3.5 предназначенное приложение MVC.NET. Я занимаюсь разработкой на Windows 7 с ее IIS, но развертывание в среде Windows Server 2003 с установленным .NET 3.5 SP1.

У нас есть действие масштабирования изображения, которое возвращает изображение из базы данных в требуемом разрешении и конвертирует в PNG на лету с API-интерфейсами System.Drawing и System.Drawing.Imaging.

Размер изображения, предоставляемого через развернутый сайт, в два раза меньше размера / качества того, который находится в разработке. Исходное изображение идентично, но запрос через развернутый сайт приводит к PNG 6,35 кбайт 154x200, но при разработке это приводит к PNG 12,28 кбайт 154x200.

Мое подозрение, есть ли какая-то разница в .NET graphics lib на 3.5 SP1 на сервере Windows? Мое приложение явно предназначено для среды выполнения .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: Разработка: Cache-Control приватный Content-Type image / png Сервер Microsoft-IIS / 7.5 X-AspNetMvc-версия 2.0 X-AspNet-версия 2.0.50727 X-Powered-By ASP.NET Дата Пт, 05 марта 2010 19:59:50 GMT Контент-длина 12574

Производство: Дата пт, 05 марта 2010 20:02:58 GMT Сервер Microsoft-IIS / 6.0 X-Powered-By ASP.NET X-AspNet-версия 2.0.50727 X-AspNetMvc-версия 2.0 Cache-Control приватный Content-Type image / png Контент-длина 6514

Ответы [ 2 ]

3 голосов
/ 06 марта 2010

Возможно, вам нужно установить формат пикселя или другие параметры, для которых вы просто используете значение по умолчанию: http://www.codeproject.com/KB/GDI-plus/imageresize.aspx

0 голосов
/ 06 марта 2010

Значения по умолчанию, скорее всего, разные, что несколько странно.Попробуйте явно указать глубину цвета, как говорили другие.

Также выполните поворот, чтобы удалить миниатюры.(Дважды переверните изображение на 180 градусов. NET вращает миниатюры при повороте.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...