Я читаю и пишу PNG, используя libpng , и мне кажется, что это имеет отношение ко всему, что я к этому добавляю (я использовал его в модульных тестах с такими вещами, как изображения размером 257x255, и они не вызывают проблем). Я считаю, что API достаточно гибок, чтобы его нельзя было привязать к файловому вводу-выводу (или, по крайней мере, вы можете переопределить его поведение по умолчанию, например, см. png_set_write_fn
в разделе customization )
На практике я всегда использую его с помощью более чистого boost :: gil PNG IO extension , но, к сожалению, для этого требуется char*
имен файлов, и если вы в него копаете, * 1015 Классы * и file_mgr
в своей реализации кажутся довольно привязанными к FILE*
(хотя, если бы вы работали в Linux, версия, использующая буферы fmemopen и in-memory, вероятно, могла бы быть довольно легко создана).