#define STB_IMAGE_IMPLEMENTATION #include #include #include #include /** * Usage: * img2c > out.c */ int main(int argc, char* argv[]) { int w, h, c; unsigned char* buf = stbi_load(argv[1], &w, &h, &c, 3); std::vector rgb565; for (int i = 0; i < w * h * 3; i += 3) { unsigned char r = buf[i]; unsigned char g = buf[i + 1]; unsigned char b = buf[i + 2]; uint16_t color = ((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3); rgb565.push_back(color); } std::cout << "const uint16_t image[" << w * h << "] = {\n"; for (size_t i = 0; i < rgb565.size(); ++i) { printf("0x%04X", rgb565[i]); if (i != rgb565.size() - 1) std::cout << ", "; if ((i + 1) % 8 == 0) std::cout << "\n"; } std::cout << "\n};\n"; stbi_image_free(buf); return 0; }