Две причины использовать FreeImage:
1. Потому, что ZINT не поддерживает - PNG и JPG, XLSXWriter - GIF. А файлы BMP достаточно большие по размеру.

2. Нормализация размера. Упрощённо говоря, если пользователь в ячейку 100x100 пытается вставить полноцветную
фотку HD 1920x1080 в BMP - то метод XLSX оптимизирует размер и вставит в ячейку картинку PNG 192x108.
Указанный метод XLSX.worksheet_insert_image_buffer_opt я смотрел. Дело в том, что в данном контексте он не эффективен.
Например, обычный штрих-код EAN13 в BMP (или буфере DIB) - это примерно 100 KByte, а в GIF (PNG) - 600 Byte.
Бабахнуть в XLSX пару-тройку тысяч товаров с картинками штрих-кодов в BMP (или через DIB буфер) технологически можно,
но результат будет огромен и ужастен, в прямом смысле этого слова …
