Столкнулся с интересной задачей и нужна помощь сообщества. Пытаюсь разобраться, можно ли в JavaScript загрузить DIB (Device Independent Bitmap) через поток ввода данных.
Что конкретно нужно:
Загрузить DIB формат через input stream
Получить дескриптор для работы с этими данными
Все это должно работать на чистом JS
Контекст задачи:
Работаю над веб-приложением, где нужно обрабатывать изображения в формате DIB. Раньше такое делал только на серверной стороне, а теперь хочется перенести логику в браузер.
Кто-нибудь сталкивался с подобным? Есть ли вообще адекватные способы решения этой задачи или лучше оставить обработку на бэкенде?
Да, можно сделать через FileReader API и работу с бинарными данными. DIB устроен просто - заголовок BITMAPINFOHEADER + пиксели. Парсишь заголовок через DataView, достаешь ширину/высоту/битность, засовываешь пиксели в ImageData. Только помни - DIB может быть перевернут по вертикали.
DIB в браузере — специфичная тема. Нативной поддержки нет, но можешь попробовать ArrayBuffer и DataView для ручного парсинга структуры. Зачем именно DIB? Canvas API с обычными форматами может оказаться проще для твоих задач.
По опыту - DIB через поток читать можно, но муторно. Год назад делал похожую задачу, писал парсер с нуля. Главное - правильно читать смещения в заголовке, иначе битмап криво отображается. File API + Uint8Array справляются хорошо, но готовься отлаживать - куча нюансов с выравниванием строк и палитрами. У меня получилось, но времени потратил прилично на все тонкости формата.