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
, которые содержат масштабные коэффициенты по горизонтали и вертикали соответственно. calculateSize(areaWidth, areaHeight, imageWidth, imageHeight)
- Вычисляет размеры (ширину и высоту) отмасштабированного изображения без коррекции соотношения сторон (пикселы квадратные). Возвращает структуру (C++, Rust) или объект (JavaScript, PHP) с двумя свойствами:
width
иheight
, которые содержат ширину и высоту отмасштабированного изображения соответственно. calculateSizeCorrected(areaWidth, areaHeight, imageWidth, imageHeight, aspectX, aspectY)
- Вычисляет размеры (ширину и высоту) отмасштабированного изображения с коррекцией соотношения сторон (пикселы прямоугольные). Тип возвращаемого значения идентичен
calculateSize()
. calculateSizeCorrectedPerfectY(areaWidth, areaHeight, imageHeight, aspectX, aspectY)
- Вычисляет размеры (ширину и высоту) отмасштабированного изображения с коррекцией соотношения сторон с целочисленным масштабным коэффициентом по вертикали, но дробным масштабным коэффициентом по горизонтали для достижения точного соотношения сторон при целочисленном масштабировании по вертикали, например, с целью равномерного распределения scanline-линий. Тип возвращаемого значения идентичен
calculateSize()
.
Для Rust также доступен модуль integer_scaling
, предназначенный для тех, кто предпочитает нотацию snake_case
.
Класс (C++, PHP) определён в пространстве имён MaratTanalin
.
Параметры
areaWidth
,areaHeight
- Целые числа, представляющие собой соответственно ширину и высоту области экрана, в которую следует вписать отмасштабированное изображение.
imageWidth
,imageHeight
- Целые числа, представляющие собой соответственно ширину и высоту изображения, подлежащего масштабированию.
aspectX
,aspectY
- Целевое соотношение сторон
aspectX:aspectY
в виде двух чисел с плавающей запятой, представляющих собой числитель и знаменатель соотношения сторон.