IntegerScaling — библиотека для целочисленного масштабирования

IntegerScaling — библиотека для вычисления масштабных коэффи­циентов для целочисленного масштаби­рования изображений с возмож­ностью коррекции соотношения сторон. Реализует авторский алгоритм масштаби­рования с результи­рующими пикселами идеально одинакового размера.

Есть версии библиотеки на языках программирования C++, Rust, JavaScript и PHP. Лицензия — MIT.

Синтаксис (API)

Библиотека доступна как объект (JavaScript), модуль (Rust) или класс (C++, PHP) IntegerScaling, у которого есть два метода/функции:

calculateRatio(areaWidth, areaHeight, imageWidth, imageHeight)
Вычисляет целочис­ленный масштабный коэффи­циент, одинаковый для осей X/Y (пикселы квадратные). Возвращает целое число.
calculateRatios(areaWidth, areaHeight, imageWidth, imageHeight, aspectX, aspectY)
Вычисляет целочис­ленные масштабные коэффи­циенты, потенциально различающиеся для осей X/Y в результате коррекции соотношения сторон (пикселы прямо­угольные). Возвращает структуру (C++, Rust) или объект (JavaScript, PHP) с двумя свойствами: x и y, которые содержат масштабные коэффи­циенты по горизонтали и вертикали соответственно.

Для Rust также доступен модуль integer_scaling, предназначенный для тех, кто предпочитает нотацию snake_case.

Класс (C++, PHP) определён в прост­ранстве имён MaratTanalin.

Параметры

areaWidth, areaHeight
Целые числа, представляющие собой соответственно ширину и высоту области экрана, в которую следует вписать отмасшта­бированное изображение.
imageWidth, imageHeight
Целые числа, представляющие собой соответ­ственно ширину и высоту изображения, подлежащего масштабированию.
aspectX, aspectY
Целевое соотношение сторон aspectX:aspectY в виде двух чисел с плавающей запятой, представляющих собой числитель и знаменатель соотношения сторон.