Как сохранить качество загружаемых графических файлов? - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть приложение asp.net MVC 5, использующее язык C #, и одна из веб-страниц позволяет пользователям загружать файлы изображений, которые имеют разные размеры в разных пропорциях.

Загруженный файл изображения будет отображаться на другой веб-странице с фиксированным размером: w = 130px и высотой = 23px, а HTML-тег img выглядит как <img src="xyz..." style="width:130px; height:23px" />

Как писать коды C # сконкретная логика или алгоритм для сохранения загруженных файлов изображений на сервере с учетом этих фиксированных размеров (130 на 23 пикселя) и соотношения сторон 5,65, что составляет 130/23, когда исходные файлы изображений пользователей имеют разные размеры и пропорции?Качество загружаемых изображений должно быть хорошим.

Пожалуйста, смотрите прикрепленный снимок экрана.Верхнее синее изображение - это исходные файлы изображений пользователей, которые имеют разные размеры и пропорции.Нижнее красное изображение - это файл изображения, загруженный на сервер, который имеет фиксированные размеры и пропорции.

enter image description here

Файлы изображений могут быть png, gif, jpg, bmp.

Спасибо.

1 Ответ

0 голосов
/ 23 февраля 2019

Вы всегда будете терять качество при изменении размера изображения, если это не векторная графика.К сожалению, в основном это не векторная графика.

Upscaling

Если, скажем, у вас есть изображение размером 5px × 5px, и вы хотите увеличить его до 10px × 10pxоткуда появятся 75 новых пикселей?Это верно, это нужно будет как-то составить.Существуют различные алгоритмы для создания этих новых пикселей, таких как ближайший сосед, билинейный, бикубический и т. Д. Некоторые инструменты даже имеют возможности повышения резкости.

Уменьшение масштаба

Если у вас есть изображение, которое5px × 5px, и если вы захотите уменьшить его до 2px × 2px, вы потеряете 21 пиксель.

Подробнее

Поэтому вы всегда будете терять качество, но уловкиможно использовать, чтобы невооруженным глазом казалось, что пиксели не были потеряны или добавлены.Необходимо помнить простое правило: никогда не превышать 300%, иначе вы начнете замечать потерю качества.Кроме того, лучше начать с большего изображения, поэтому попросите пользователей загрузить увеличенное изображение, чтобы затем уменьшить его.

Я использую библиотеку ac # с именем ImageResizer для изменения размера.Он доступен в виде пакета NuGet.

Библиотека ядра ImageResizer v4 и 18 плагинов в выпуске Essential являются бесплатными и с открытым исходным кодом под лицензией Apache 2.

См. обзор в лицензировании.

Если вам интересны алгоритмы, см. эту статью.

...