В предыдущей статье я совершенно проигнорировал тот факт, что формат BMP имеет множество версий (целых 7), что там присутствует компрессия, разное количество битов на пиксель и цветовые маски. Также, C++ там был только в названии статьи, код был написан на чистом C.
Здесь я постарался добавить поддержку большего количества форматов (конечно не все, но самые популярные) и использовать известные мне возможности C++.