C/C++ Image Loading [closed] C/C++ Image Loading [closed] c c

C/C++ Image Loading [closed]


I'm always a fan of CImg. It's very easy to use. Another user liked the answer as well. I'll post the same example I posted in the answer so you can see how easy it is to access pixels and dimension info.

CImg<unsigned char> src("image.jpg");int width = src.width();int height = src.height();unsigned char* ptr = src.data(10,10); // get pointer to pixel @ 10,10unsigned char pixel = *ptr;


FreeImage is a good open source library

Here is an example code, data is accessible with "out.data()"

FREE_IMAGE_FORMAT format = FreeImage_GetFileTypeU(filename.c_str());if (format == FIF_UNKNOWN)      format = FreeImage_GetFIFFromFilenameU(filename.c_str());if (format == FIF_UNKNOWN)      throw(std::runtime_error("File format not supported"));FIBITMAP* bitmap = FreeImage_LoadU(format, filename.c_str());FIBITMAP* bitmap2 = FreeImage_ConvertTo32Bits(bitmap);FreeImage_Unload(bitmap);std::vector<char> out(FreeImage_GetWidth(bitmap2) * FreeImage_GetHeight(bitmap2) * 4);FreeImage_ConvertToRawBits((BYTE*)out.data(), bitmap2, FreeImage_GetWidth(bitmap2) * 4, 32, FI_RGBA_RED_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK, true);FreeImage_Unload(bitmap2);


There is Boost's GIL which was originally developed by Adobe. It might not be the most intuitive one, but it certainly is one of the most complete and powerful libs.