Вы всегда будете терять качество при изменении размера изображения, если это не векторная графика.К сожалению, в основном это не векторная графика.
Upscaling
Если, скажем, у вас есть изображение размером 5px × 5px, и вы хотите увеличить его до 10px × 10pxоткуда появятся 75 новых пикселей?Это верно, это нужно будет как-то составить.Существуют различные алгоритмы для создания этих новых пикселей, таких как ближайший сосед, билинейный, бикубический и т. Д. Некоторые инструменты даже имеют возможности повышения резкости.
Уменьшение масштаба
Если у вас есть изображение, которое5px × 5px, и если вы захотите уменьшить его до 2px × 2px, вы потеряете 21 пиксель.
Подробнее
Поэтому вы всегда будете терять качество, но уловкиможно использовать, чтобы невооруженным глазом казалось, что пиксели не были потеряны или добавлены.Необходимо помнить простое правило: никогда не превышать 300%, иначе вы начнете замечать потерю качества.Кроме того, лучше начать с большего изображения, поэтому попросите пользователей загрузить увеличенное изображение, чтобы затем уменьшить его.
Я использую библиотеку ac # с именем ImageResizer для изменения размера.Он доступен в виде пакета NuGet.
Библиотека ядра ImageResizer v4 и 18 плагинов в выпуске Essential являются бесплатными и с открытым исходным кодом под лицензией Apache 2.
См. обзор в лицензировании.
Если вам интересны алгоритмы, см. эту статью.