Working with PNG files in C++

I’m working on MacOS X, so first of all I need to compile and install the libraries (libpng and png++):

#Download here: http://prdownloads.sourceforge.net/libpng/libpng-1.5.7.tar.gz?download
tar xvzf libpng-1.5.7.tar.gz
cd libpng-1.5.7
./configure
make
sudo make install

#Download png++
curl http://download.savannah.nongnu.org/releases/pngpp/png++-0.2.5.tar.gz > ./png++.tar.gz
tar xzvf png++.tar.gz
cd png++-0.2.5
make
sudo make install

Everything should be installed now, and we can write some code. Create the following C++ program:

#include <png++/png.hpp>

int main() {

  png::image< png::rgb_pixel > image("input.png");

  for (size_t y = 0; y < image.get_height(); ++y) {
    for (size_t x = 0; x < image.get_width(); ++x) {
      if(((x+y)%2) == 0) image[x][y] = png::rgb_pixel(0, 0, 0);
    }
  }

 image.write("output.png");
}

The program loads a file called input.png, sets every other pixel to black and writes it to output.png. Compile and run as follows:

g++ test.cpp -lpng
./a.out
For blog updates and more follow me on twitter.