raster-images
v0.1.0
Published
Library for working with bitmaps
Downloads
5
Readme
raster-images
Library for working with bitmaps
Операции с растровой графикой - загрузка из файловых форматов и преобразования между различными пиксельными форматами. На языке TypeScript. Возможно использование как на клиенте (в браузере), так и на сервере (н.р. Node JS).
Вообще для операций с растровыми данными требуется высокая производительность. Поэтому для них желательно использовать графический ускоритель. Ну или хотя бы более подходящий язык программирования - Java или C++. К сожалению, иногда у разработчика просто нет выбора. Ну или экономически не рентабельно усложнять решение для какой-то очень простой задачи. На этот случай может быть полезна данная библиотека.
Основным рабочим объектом является Surface. Это и есть растровое изображение. Название выбрано максимально краткое и без конфликтов с именами встроенных объектов. Например, в браузере уже есть стандартный интерфейс с именем Image. Surface содержит:
- информацию об изображении (метаданные) - ширина, высота, формат пикселей и дополнительные опциональные переменные.
- пиксельные данные в виде строк. Единицей растровых данных являются не пиксели, а строки. Потому что интерпретация пиксельных данных сильно зависит от формата пикселей. Например, черно-белое изображение предполагает 8 пикселей в одном байте. А в формате CMYK+Alpha 32 bit один пиксельзанимает 40 байт.
Данная библиотека поддерживает большое количество пиксельных форматов. Для этого служит класс PixelFormat. Формат пикселей зависит от:
- цветовой модели - RGB, градации серого, палитра (индексная модель), CMYK и другие.
- количества бит для цветовых компонентов.
- наличие альфа-канала
Для компактного описания пиксельных форматов используются строковые сигнатуры. В них используется обозначение цветового компонента и количество бит. Например, R8G8B8A8 - это четырехбайтовый пиксель с 4 компонентами: красный, зеленый, синий и альфа. (Такой формат используется в Canvas)
Библиотека raster-images даёт возможность преобразовать растровые данные из одного пиксельного формата в другой. При этом можно регулировать параметры, влияющие на качество и быстродействие. Например, можно использовать размытие (диферинг) для повышения качества преобразования с понижением цветовой глубины.
Другой важной возможностью библиотеки является работа с файловыми форматами.
Существует огромное количество файловых форматов для изображений. Браузер "из коробки" позволяет работать с тремя: JPEG, GIF и PNG. Несомненно, такими возможностями следует пользоваться везде, гдк это возможно. Однако, встроенные функции оперируют только пиксельными данными, игнорируя все метаданные. Хотя например, при работе с фотографиями было бы полезно получать значения выдержки и диафрагмы. Ну или в ряде случаев было бы неплохо использовать пиктограмму, встроенную в JPEG-файл. При помощи raster-images можно получить практически любые метаданные, которые содержит файл.
Ну и если по какой-то причине понадобилось загружать данные из других форматов, то здесь тоже поможет raster-imagesю