Color space conversion

From Attie's Wiki
Revision as of 17:24, 26 March 2013 by Attie (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

RGB565 to RGB888

A really nasty little app to convert between RAW RGB565 → RGB888. Useful for dumping a 16-bit linux framebuffer!

#include <stdio.h>
#include <stdlib.h>
 
/*
        xxxx xxxx  xxxx xxxx
        rrrr rggg  gggb bbbb
*/
 
void write_red(int fdout, char *pixel) {
        char b;
        b = pixel[1];
        b &= 0b11111000;
        write(fdout, &b, 1);
}
void write_green(int fdout, char *pixel) {
        char b, b2;
        b = pixel[1];
        b <<= 5;
        b2 = pixel[0];
        b2 >>= 3;
        b2 &= 0b00011100;
        b |= b2;
        b &= 0b11111100;
        write(fdout, &b, 1);
}
void write_blue(int fdout, char *pixel) {
        char b;
        b = pixel[0];
        b <<= 3;
        b &= 0b11111000;
        write(fdout, &b, 1);
}
 
int main(int argc, char *argv[]) {
        char pixel[2];
 
        int fdin;
        int fdout;
 
        fdin = fileno(stdin);
        fdout = fileno(stdout);
 
        while (read(fdin, pixel, 2) == 2) {
                write_red(fdout, pixel);
                write_green(fdout, pixel);
                write_blue(fdout, pixel);
        }
 
        return 0;
}
Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox