#include #include #include "lodepng.h" #include "png.h" #include "ui.h" u8 *PNG_Decompress(const u8 *png, size_t png_len, u32 *w, u32 *h) { u8 *img; u32 res; size_t w_, h_; res = lodepng_decode24(&img, &w_, &h_, png, png_len); if (res) return NULL; // maybe process in batches of 3 pixels / 12 bytes at a time? for (size_t i = 0; i < (w_ * h_ * 3); i += 3) { u8 c = img[i]; img[i] = img[i + 2]; img[i + 2] = c; } if (w) *w = w_; if (h) *h = h_; return img; }