--- a/codecs/png.cc +++ b/codecs/png.cc @@ -16,6 +16,7 @@ */ #include +#include #include #include @@ -104,7 +105,7 @@ image.w = width; image.h = height; image.bps = bit_depth; - image.spp = info_ptr->channels; + image.spp = png_get_channels(png_ptr, info_ptr); png_uint_32 res_x, res_y; res_x = png_get_x_pixels_per_meter(png_ptr, info_ptr); @@ -120,10 +121,13 @@ // png_set_packswap(png_ptr); /* Expand paletted colors into true RGB triplets */ + + int num_trans; + if (color_type == PNG_COLOR_TYPE_PALETTE) { png_set_palette_to_rgb(png_ptr); image.bps = 8; - if (info_ptr->num_trans) + if (num_trans) image.spp = 4; else image.spp = 3;