UNPKG

712 BPlain TextView Raw
1export type Color = [number, number, number];
2
3export function yuv2rgb(yuv: Color): Color {
4 const y = yuv[0],
5 u = yuv[1],
6 v = yuv[2];
7 let r, g, b;
8
9 r = y * 1 + u * 0 + v * 1.13983;
10 g = y * 1 + u * -0.39465 + v * -0.5806;
11 b = y * 1 + u * 2.02311 + v * 0;
12
13 r = Math.min(Math.max(0, r), 1);
14 g = Math.min(Math.max(0, g), 1);
15 b = Math.min(Math.max(0, b), 1);
16
17 return [r * 255, g * 255, b * 255];
18}
19
20export function rgb2yuv(rgb: Color): Color {
21 const r = rgb[0] / 255,
22 g = rgb[1] / 255,
23 b = rgb[2] / 255;
24
25 const y = r * 0.299 + g * 0.587 + b * 0.114;
26 const u = r * -0.14713 + g * -0.28886 + b * 0.436;
27 const v = r * 0.615 + g * -0.51499 + b * -0.10001;
28
29 return [y, u, v];
30}