codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
// pastel.c #include <stdio.h> #include <stdlib.h> #include "io_bmp.h" void to_pastel_PIXEL(struct PIXEL* p) { const double o=1.2; const double q=0.5; const double s=0.2; double r = p->r; r /= 255; double g = p->g; g /= 255; double b = p->b; b /= 255; double* u = (r>g) ? ((r>b) ? &r : &b) : ((g>b) ? &g : &b); double* d = (r<g) ? ((r<b) ? &r : &b) : ((g<b) ? &g : &b); double _u = *u; double _d = *d; r += (1 - _u) * ((_u - _d + s) * o); g += (1 - _u) * ((_u - _d + s) * o); b += (1 - _u) * ((_u - _d + s) * o); _u = *u; _d = *d; r += (_u - r) * ((_u - _d + s) * q); g += (_u - g) * ((_u - _d + s) * q); b += (_u - b) * ((_u - _d + s) * q); p->r = (r>=1) ? 255 : r * 255; p->g = (g>=1) ? 255 : g * 255; p->b = (b>=1) ? 255 : b * 255; } void main(int argc,char** argv) { struct BMP* a = (struct BMP*)malloc(sizeof(struct BMP)); read_BMP(a, argv[1]); struct PIXEL* p = a->p; int i = a->w * a->h; while (i-- > 0) { to_pastel_PIXEL(p++); } write_BMP(a, "a.bmp"); }
Private
[
?
]
Run code
Submit