return load_image(widen(filename));\r
}\r
\r
+std::shared_ptr<FIBITMAP> load_png_from_memory(const void* memory_location, size_t size)\r
+{\r
+ FREE_IMAGE_FORMAT fif = FIF_PNG;\r
+\r
+ auto memory = std::unique_ptr<FIMEMORY, decltype(&FreeImage_CloseMemory)>(\r
+ FreeImage_OpenMemory(static_cast<BYTE*>(const_cast<void*>(memory_location)), size),\r
+ FreeImage_CloseMemory);\r
+ auto bitmap = std::shared_ptr<FIBITMAP>(FreeImage_LoadFromMemory(fif, memory.get(), 0), FreeImage_Unload);\r
+\r
+ if (FreeImage_GetBPP(bitmap.get()) != 32)\r
+ {\r
+ bitmap = std::shared_ptr<FIBITMAP>(FreeImage_ConvertTo32Bits(bitmap.get()), FreeImage_Unload);\r
+\r
+ if (!bitmap)\r
+ BOOST_THROW_EXCEPTION(invalid_argument() << msg_info("Unsupported image format."));\r
+ }\r
+\r
+ return bitmap;\r
+}\r
+\r
}}
\ No newline at end of file
\r
std::shared_ptr<FIBITMAP> load_image(const std::string& filename);\r
std::shared_ptr<FIBITMAP> load_image(const std::wstring& filename);\r
+std::shared_ptr<FIBITMAP> load_png_from_memory(const void* memory_location, size_t size);\r
\r
}}\r