Описание тега image-resizing

Изменение размера изображения - это уменьшение или увеличение масштаба изображения. Существуют десятки алгоритмов, все с компромиссом между производительностью и качеством.

Изменение размера изображения (также называемое масштабированием изображения) - это понижающая или повышающая дискретизация изображения с использованием алгоритма интерполяции. Распространенными алгоритмами уменьшения масштаба являются алгоритмы Ланцоша, Бикубическая резкость, Бикубическая сглаживание, Фант, Бикубический, Билинейный и Ближайший сосед (перечислены в порядке среднего качества результата). Фрактальные алгоритмы часто дают лучшие результаты для апскейлинга фотографий, в то время как существует множество алгоритмов, оптимизированных для апскейлинга пиксельной графики.

Из-за алгоритмической сложности большинство разработчиков используют библиотечные реализации этих алгоритмов.

FreeImage

Предлагает фильтры CatmullRom, Lanczos3, bspline, box, бикубические и билинейные фильтры. FreeImage ориентирован на простоту реализации и не использует аппаратное ускорение или расширения SIMD, поэтому эти скорости могут быть неприемлемыми для отображения изображений в реальном времени.

Windows GDI+

Хотя многие ненавидят GDI+, он все же включает в себя отличный двухпроходный бикубический фильтр. Он предлагает: 2-проходную бикубическую, 1-проходную бикубическую, билинейную и ближайшего соседа. Те, кто его использует, должны знать, что он может добавлять кольца к изображениям, если для WrapMode не задано значение TileXY, иначе алгоритм выполняет выборку данных за пределами границ изображения.

WIC (Компоненты Windows Imaging)

Класс IWICBitmapScaler предлагает Fant, однопроходный бикубический, билинейный и ближайший сосед. Реализации оптимизированы по производительности и могут быть в 2-4 раза быстрее, чем их аналоги GDI, хотя в настоящее время нет двухпроходного бикубического фильтра, такого как GDI+.