Convert pgm image files to RLE format expected by the keepkey
go get -u github.com/markrypt0/pgm-to-rle
go install github.com/markrypt0/pgm-to-rle
pgm-to-rle [flags] file [output_struct_prefix]
Images are expected to be stored as space separated integer values(0-255) with newlines between rows.
example:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 200 200 200 200 0
0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 200 0 0 200 0
0 3 3 3 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 200 200 200 200 0
0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 200 0 0 0 0
0 3 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 200 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Files exported from gimp in pgm format are also supported
const uint8_t fox_screensaver_data[886] =
{
0x32, 0x0, 0x2, 0x20, 0x1e, 0x0, 0xfe, 0x30, 0x10, 0x8, 0x0, 0xfc, 0x30, 0x50, 0x40, 0x20, 0x19, 0x0, 0xfe, 0x10, 0x30, 0x2, 0x60, 0xff, 0x10, 0x8, 0x0, 0xff, 0x20, 0x3, 0x50, 0xfe, 0x40, 0x20, 0x15, 0x0, 0xfd, 0x10, 0x40, 0x60, 0x2, 0x70, 0xff, 0x50, 0x9, 0x0, 0xff, 0x10, 0x4, 0x50, 0xfc, 0x60, 0x50, 0x30, 0x10, 0x10, 0x0, 0xfd, 0x20, 0x40, 0x60, 0x2, 0x70, 0xfd, 0x60, 0x70, 0x40, 0xa, 0x0, 0x5, 0x50, 0x2, 0x60, 0xfd, 0x50, 0x40, 0x20, 0xc, 0x10, 0xfd, 0x30, 0x50, 0x60, 0x2, 0x70, 0x3, 0x60, 0xfe, 0x70, 0x30, 0xa, 0x0, 0xff, 0x40, 0x3, 0x50, 0x6, 0x60, 0x3, 0x50, 0x6, 0x40, 0x2, 0x50, 0x3, 0x60, 0xff, 0x70, 0x6, 0x60, 0xff, 0x20, 0xa, 0x0, 0xff, 0x30, 0x3, 0x50, 0xa, 0x60, 0x3, 0x50, 0xe, 0x60, 0xff, 0x10, 0xa, 0x0, 0xfd, 0x20, 0x60, 0x50, 0xc, 0x60, 0xff, 0x50, 0xe, 0x60, 0xff, 0x50, 0xb, 0x0, 0xff, 0x10, 0x2, 0x50, 0x1b, 0x60, 0xff, 0x40, 0xb, 0x0, 0xfe, 0x10, 0x50, 0x1c, 0x60, 0xff, 0x30, 0xc, 0x0, 0xff, 0x40, 0x1c, 0x60, 0xff, 0x20, 0xc, 0x0, 0xff, 0x30, 0x1c, 0x60, 0xff, 0x10, 0xc, 0x0, 0xff, 0x30, 0x3, 0x60, 0xff, 0x50, 0x13, 0x60, 0xff, 0x50, 0x3, 0x60, 0xff, 0x50, 0xd, 0x0, 0xff, 0x20, 0x2, 0x60, 0xff, 0x50, 0x15, 0x60, 0xff, 0x50, 0x2, 0x60, 0xff, 0x40, 0xd, 0x0, 0xff, 0x10, 0x2, 0x50, 0x17, 0x60, 0x2, 0x50, 0xff, 0x30, 0xd, 0x0, 0xfe, 0x10, 0x50, 0x19, 0x60, 0xfe, 0x50, 0x10, 0xd, 0x0, 0xff, 0x30, 0x1a, 0x60, 0xfe, 0x50, 0x10, 0xd, 0x0, 0xff, 0x50, 0x1b, 0x60, 0xfe, 0x70, 0x20, 0xb, 0x0, 0xff, 0x10, 0x1c, 0x60, 0xfe, 0x70, 0x40, 0xb, 0x0, 0xff, 0x30, 0x1c, 0x60, 0xfe, 0x70, 0x60, 0xb, 0x0, 0xff, 0x50, 0x1d, 0x60, 0xfe, 0x70, 0x20, 0x9, 0x0, 0xff, 0x10, 0x1e, 0x60, 0xfe, 0x70, 0x40, 0x9, 0x0, 0xff, 0x30, 0x1e, 0x60, 0xfe, 0x70, 0x60, 0x9, 0x0, 0xfe, 0x10, 0x40, 0x1b, 0x60, 0x2, 0x70, 0xfe, 0x60, 0x20, 0xb, 0x0, 0xff, 0x40, 0x2, 0x70, 0x17, 0x60, 0xfd, 0x70, 0x60, 0x30, 0xc, 0x0, 0xff, 0x40, 0x3, 0x60, 0xff, 0x70, 0x14, 0x60, 0x2, 0x70, 0xfe, 0x50, 0x10, 0xc, 0x0, 0xff, 0x40, 0x5, 0x60, 0x2, 0x70, 0x11, 0x60, 0xfd, 0x70, 0x60, 0x30, 0xc, 0x0, 0xfd, 0x10, 0x60, 0x70, 0x6, 0x60, 0xfe, 0x50, 0x70, 0xe, 0x60, 0x2, 0x70, 0xfe, 0x50, 0x10, 0xc, 0x0, 0xfd, 0x20, 0x60, 0x70, 0x8, 0x60, 0xfe, 0x50, 0x70, 0xc, 0x60, 0xfc, 0x70, 0x60, 0x50, 0x20, 0xc, 0x0, 0xfd, 0x20, 0x60, 0x70, 0x9, 0x60, 0x2, 0x50, 0xff, 0x70, 0x4, 0x60, 0xfd, 0x80, 0xa0, 0x80, 0x3, 0x60, 0xfe, 0x70, 0x50, 0x2, 0x40, 0xc, 0x0, 0xfd, 0x20, 0x60, 0x70, 0xb, 0x60, 0x2, 0x50, 0xff, 0x70, 0x2, 0x60, 0xf8, 0x70, 0xd0, 0xf0, 0xd0, 0x70, 0x60, 0x70, 0x60, 0x2, 0x40, 0xff, 0x30, 0xb, 0x0, 0xff, 0x30, 0x2, 0x70, 0xc, 0x60, 0x3, 0x50, 0x2, 0x70, 0xff, 0xa0, 0x3, 0xf0, 0xfd, 0xd0, 0x70, 0x50, 0x3, 0x40, 0xff, 0x10, 0xa, 0x0, 0xfe, 0x40, 0x70, 0xf, 0x60, 0x3, 0x50, 0xff, 0x70, 0x5, 0xf0, 0xfe, 0xb0, 0x30, 0x2, 0x40, 0xff, 0x30, 0xa, 0x0, 0xfe, 0x10, 0x70, 0x10, 0x60, 0x4, 0x50, 0xff, 0xa0, 0x3, 0xf0, 0xfd, 0xd0, 0x50, 0x30, 0x2, 0x40, 0xff, 0x20, 0xa, 0x0, 0xfe, 0x10, 0x70, 0x10, 0x60, 0x4, 0x50, 0xfc, 0x40, 0xa0, 0xf0, 0xe0, 0x2, 0x30, 0x3, 0x40, 0xff, 0x10, 0xa, 0x0, 0xfe, 0x10, 0x70, 0x11, 0x60, 0x5, 0x50, 0xfd, 0xa0, 0x60, 0x30, 0x3, 0x40, 0xff, 0x30, 0xb, 0x0, 0xfe, 0x10, 0x70, 0x11, 0x60, 0x5, 0x50, 0x2, 0x30, 0x4, 0x40, 0xff, 0x20, 0xb, 0x0, 0xfe, 0x10, 0x70, 0x12, 0x60, 0x5, 0x50, 0x5, 0x40, 0xc, 0x0, 0xfe, 0x10, 0x70, 0x12, 0x60, 0x5, 0x50, 0x4, 0x40, 0xff, 0x30, 0xc, 0x0, 0xfe, 0x10, 0x70, 0x12, 0x60, 0x5, 0x50, 0x4, 0x40, 0xff, 0x10, 0xc, 0x0, 0xfe, 0x20, 0x70, 0xc, 0x60, 0x3, 0x50, 0x4, 0x60, 0x4, 0x50, 0x3, 0x40, 0xff, 0x30, 0xd, 0x0, 0xfd, 0x10, 0x60, 0x70, 0xd, 0x60, 0x3, 0x50, 0x2, 0x60, 0x4, 0x50, 0x3, 0x40, 0xff, 0x20, 0xe, 0x0, 0xfe, 0x30, 0x70, 0xf, 0x60, 0x7, 0x50, 0x3, 0x40, 0xff, 0x10, 0xf, 0x0, 0xfe, 0x50, 0x70, 0x10, 0x60, 0x5, 0x50, 0x2, 0x40, 0xff, 0x30, 0x10, 0x0, 0xfd, 0x10, 0x60, 0x70, 0x10, 0x60, 0x2, 0x70, 0xfe, 0x40, 0x50, 0x2, 0x40, 0xff, 0x20, 0x11, 0x0, 0xff, 0x30, 0x2, 0x70, 0xf, 0x60, 0xf9, 0xd0, 0xf0, 0xb0, 0x40, 0x20, 0x30, 0x10, 0x12, 0x0, 0xfe, 0x60, 0x70, 0xd, 0x60, 0xfe, 0x50, 0xb0, 0x3, 0xf0, 0xfd, 0xe0, 0x90, 0x20, 0x13, 0x0, 0xfd, 0x20, 0x60, 0x70, 0xb, 0x60, 0xfe, 0x50, 0xa0, 0x6, 0xf0, 0xfe, 0xd0, 0x60, 0x13, 0x0, 0xfe, 0x40, 0x70, 0xb, 0x60, 0xff, 0x80, 0x9, 0xf0, 0xfe, 0xb0, 0x40, 0x12, 0x0, 0xfe, 0x60, 0x70, 0x9, 0x60, 0xfe, 0x70, 0xe0, 0xb, 0xf0, 0xfe, 0xa0, 0x10, 0x10, 0x0, 0xfe, 0x20, 0x70, 0x9, 0x60, 0xff, 0xc0, 0xd, 0xf0, 0xff, 0x40, 0x11, 0x0, 0xfe, 0x40, 0x70, 0x6, 0x60, 0xfe, 0x50, 0xc0, 0xe, 0xf0, 0xff, 0x40, 0x11, 0x0, 0xfd, 0x10, 0x60, 0x70, 0x4, 0x60, 0xfe, 0x50, 0xa0, 0xf, 0xf0, 0xff, 0x40, 0x12, 0x0, 0xfe, 0x30, 0x70, 0x4, 0x60, 0xff, 0x90, 0x10, 0xf0, 0xff, 0x40, 0x13, 0x0, 0xfe, 0x50, 0x70, 0x2, 0x60, 0xff, 0x80, 0x11, 0xf0, 0xff, 0x40, 0x13, 0x0, 0xff, 0x10, 0x2, 0x60, 0xfe, 0x70, 0xe0, 0x11, 0xf0, 0xff, 0x40, 0x14, 0x0, 0xfd, 0x30, 0x60, 0xc0, 0x10, 0xf0, 0xfd, 0xe0, 0x90, 0x10, 0x15, 0x0, 0xfb, 0x40, 0x70, 0x90, 0xc0, 0xe0, 0xc, 0xf0, 0xfe, 0x80, 0x30, 0x19, 0x0, 0xfb, 0x20, 0x40, 0x60, 0x90, 0xc0, 0x8, 0xf0, 0xfe, 0xb0, 0x40, 0x1e, 0x0, 0xfb, 0x20, 0x30, 0x60, 0xa0, 0xd0, 0x3, 0xf0, 0xfe, 0xb0, 0x50, 0x22, 0x0, 0x2, 0x10, 0xfb, 0x30, 0x70, 0xa0, 0x70, 0x10, 0x11, 0x0
};
static const Image fox_screensaver_image = {42, 60, 886, fox_screensaver_data};
pgm-to-rle -screensaver fox.pgm fox_screensaver
pgm-to-rle -logo fox.pgm fox_logo