В библиотеке FreeImage нет такой полезной опции, как частичная загрузка файлов. По-английски я условно назвал это "Partial image loading" (PIL).
Имеется в виду вариант, когда с диска открывается поддерживаемый графический файл, и загружается в память не полностью - а только заголовок + палетка (цветов) + метаданные (если они есть), без загрузки пикселей.
Такое необходимо, если у нас множество графических файлов, и мы хотим как-нибудь малой кровью узнать, какие у них пиксельные размеры, DPI, глубина цветности. Вся эта информация находится в заголовке, в палетке (и в метаданных кое-что есть - но очень редко).
Сейчас приходится загружать целиком весь файл, чтобы узнать эти данные - а это долго. Очень долго.
На форуме FreeImage эта тема давно обсуждается, но авторы FreeImage не торопятся пока реализовать эту фичу - говоря, что это слишком муторная возня.
Я тут на пробу сделал модифицированную версию FreeImage, которая поддерживает PIL - но только исключительно для BMP-файлов (для простоты). Хотелось бы распространить эту фичу на все другие форматы, поддерживаемые FreeImage. Но не знаю, потяну ли я это в одиночку. Это ж надо индивидуально править руками каждый плагин внутри FreeImage, отвечающий за поддержку конкретного формата. Естественно, все плагины друг на друга непохожи - форматы-то бывают самыми прихотливыми.
Эта тема обсуждается на форуме FreeImage здесь:
https://sourceforge.net/projects/freeimage/forums/forum/36111/topic/1428410Вот моя пробная реализация частичной загрузки:
http://www.djvu-soft.narod.ru/soft/fi_mod_v1_0.rar (4,81 МБ)
Внутри - модифицированный (перекомпилированный) FreeImage.dll + исходники, а также пример кода, объясняющий, как это использовать. Я модифицировал одну из старых версий FreeImage - 3.9.2 - потому что там есть компиляционный проект под MS VC++ 6.0 (который я использую). Последние версии FreeImage уже не имеют такового, и я не могу их скомпилировать под MS VC++ 6.0 (по крайней мере, в первом приближении).
Пробная реализация работает только для BMP-файлов. Все остальные форматы - тоже работают, но по-старому - т.е. без возможности частичной загрузки.