int WriteJpg(const char * filename, const Image<T>& im, int quality) { const unsigned char * ptr = (unsigned char*)(im.GetMat().data()); const int w = im.Width(), h = im.Height(); const int depth = sizeof( T ) / sizeof(unsigned char); std::vector<unsigned char> array( ptr , ptr + w*h*depth ); return WriteJpg(filename, array, w, h, depth, quality); }
int WriteJpg(const char * filename, const Image<T> & im, int quality) { const unsigned char * ptr = (unsigned char*)(im.data()); const int w = static_cast<int>( im.Width() ); const int h = static_cast<int>( im.Height()); const int depth = sizeof( T ) / sizeof(unsigned char); std::vector<unsigned char> array( ptr , ptr + w*h*depth ); int res = WriteJpg(filename, array, w, h, depth, quality); return res; }
int WriteImage(const char * filename, const std::vector<unsigned char> & ptr, int w, int h, int depth){ Format f = GetFormat(filename); switch (f) { case Pnm: return WritePnm(filename, ptr, w, h, depth); case Png: return WritePng(filename, ptr, w, h, depth); case Jpg: return WriteJpg(filename, ptr, w, h, depth); case Tiff: return WriteTiff(filename, ptr, w, h, depth); default: return 0; }; }
bool ImageLoader::SaveImageToFile(const std::string& filename, const std::vector<Uint8>& pixels, unsigned int width, unsigned int height) { // Make sure the image is not empty if (!pixels.empty() && width && height) { // Deduce the image type from its extension if (filename.size() > 3) { // Extract the extension std::string extension = filename.substr(filename.size() - 3); if (ToLower(extension) == "bmp") { // BMP format if (stbi_write_bmp(filename.c_str(), width, height, 4, &pixels[0])) return true; } else if (ToLower(extension) == "tga") { // TGA format if (stbi_write_tga(filename.c_str(), width, height, 4, &pixels[0])) return true; } else if(ToLower(extension) == "png") { // PNG format if (stbi_write_png(filename.c_str(), width, height, 4, &pixels[0], 0)) return true; } else if (ToLower(extension) == "jpg") { // JPG format if (WriteJpg(filename, pixels, width, height)) return true; } } } Err() << "Failed to save image \"" << filename << "\"" << std::endl; return false; }