Advertisement
mrlantan

Untitled

Aug 25th, 2021
1,373
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.22 KB | None | 0 0
  1. void Write(const std::string& filename) {
  2.         FILE* fp = fopen(filename.c_str(), "wb");
  3.         if (!fp) {
  4.             throw std::runtime_error("Can't open file " + filename);
  5.         }
  6.  
  7.         png_structp png = png_create_write_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr);
  8.         if (!png) {
  9.             throw std::runtime_error("Can't create png write struct");
  10.         }
  11.  
  12.         png_infop info = png_create_info_struct(png);
  13.         if (!info) {
  14.             throw std::runtime_error("Can't create png info struct");
  15.         }
  16.  
  17.         if (setjmp(png_jmpbuf(png))) {
  18.             abort();
  19.         }
  20.  
  21.         png_init_io(png, fp);
  22.  
  23.         // Output is 8bit depth, RGBA format.
  24.         png_set_IHDR(png, info, width_, height_, 8, PNG_COLOR_TYPE_RGBA, PNG_INTERLACE_NONE,
  25.                      PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
  26.         png_write_info(png, info);
  27.  
  28.         // To remove the alpha channel for PNG_COLOR_TYPE_RGB format,
  29.         // Use png_set_filler().
  30.         // png_set_filler(png, 0, PNG_FILLER_AFTER);
  31.  
  32.         png_write_image(png, bytes_);
  33.         png_write_end(png, nullptr);
  34.  
  35.         fclose(fp);
  36.         png_destroy_write_struct(&png, &info);
  37.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement