Last active
August 1, 2019 18:28
-
-
Save chezsick/b4a449000a12e069c12a3b19845b61e6 to your computer and use it in GitHub Desktop.
Reproduce The Secam Process In My "Sauce" ;;;;;; arg1 ::::: length width image + PAL (Bonus)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$b = 0; | |
$m = 0; | |
$final = array_fill(0,3,0); | |
function yuv2rgb($color) | |
{ | |
$rgb = array_fill(0,3,0); | |
$rgb[0] = abs($color[0] + 1.4075 * ($color[2] - 128)); | |
$rgb[1] = abs($color[0] - 0.3455 * ($color[1] - 128) - (0.7169 * ($color[2] - 128))); | |
$rgb[2] = abs($color[0] + 1.7790 * ($color[1] - 128)); | |
return $rgb; | |
} | |
while (false !== ($o = fgetc(STDIN))) | |
{ | |
switch ($m % 2) | |
{ | |
case 0: | |
$a = ord($o); | |
break; | |
case 1: | |
$b = ord($o); | |
break; | |
} | |
$y = intval(($a+$b)/2); | |
$final = yuv2rgb([$y,$a-$y,$b-$y]); | |
if ($final[0] > 256){$final[0]=255-$final[0];} | |
if ($final[1] > 256){$final[1]=255-$final[1];} | |
if ($final[2] > 256){$final[2]=255-$final[2];} | |
echo chr($final[0]).chr($final[1]).chr($final[2]); | |
$m = $m + 1; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$m = 0; | |
$final = array_fill(0,3,0); | |
function rgb2yuv($color) | |
{ | |
$yuv = array_fill(0,3,0); | |
$yuv[0] = $color[0] * .299000 + $color[1] * .587000 + $color[2] * .114000; | |
$yuv[1] = $color[0] * -.168736 + $color[1] * -.331264 + $color[2] * .500000 + 128; | |
$yuv[2] = $color[0] * .500000 + $color[1] * -.418688 + $color[2] * -.081312 + 128; | |
return $yuv; | |
} | |
while ($o = fread(STDIN,3)) | |
{ | |
$final = rgb2yuv([ord($o[0]),ord($o[1]),ord($o[2])]); | |
switch ($m % 2) | |
{ | |
case 0: | |
$p = intval(($final[0] + ($final[1] - $final[2]))/2); | |
break; | |
case 1: | |
$p = intval(($final[0] + ($final[2] - $final[1]))/2); | |
break; | |
} | |
echo chr($p); | |
$m = $m + 1; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$m = 0; | |
$line = $argv[1]; | |
$final = array_fill(0,3,0); | |
function rgb2yuv($color) | |
{ | |
$yuv = array_fill(0,3,0); | |
$yuv[0] = $color[0] * .299000 + $color[1] * .587000 + $color[2] * .114000; | |
$yuv[1] = $color[0] * -.168736 + $color[1] * -.331264 + $color[2] * .500000 + 128; | |
$yuv[2] = $color[0] * .500000 + $color[1] * -.418688 + $color[2] * -.081312 + 128; | |
return $yuv; | |
} | |
while ($o = fread(STDIN,3)) | |
{ | |
$final = rgb2yuv([ord($o[0]),ord($o[1]),ord($o[2])]); | |
$y = ($final[0] / 256)*128; | |
switch (intval($m/$line) % 2) | |
{ | |
case 0: | |
$p = $m % 2 ? (($final[1]/256)*128) + $y : $y; | |
break; | |
case 1: | |
$p = $m % 2 ? (($final[2]/256)*128) + $y : $y; | |
break; | |
} | |
echo chr($p); | |
$m = $m + 1; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$m = 0; | |
$l = 0; | |
$v = 0; | |
$u = true; | |
$one = 0; | |
$two = 0; | |
$line = $argv[1]; | |
$yc = array_fill(0,$line,0); | |
$uc = array_fill(0,$line,0); | |
$vc = array_fill(0,$line,0); | |
$b = array_fill(0,$line,0); | |
$final = array_fill(0,3,0); | |
function yuv2rgb($color) | |
{ | |
$rgb = array_fill(0,3,0); | |
$rgb[0] = abs($color[0] + 1.4075 * ($color[2] - 128)); | |
$rgb[1] = abs($color[0] - 0.3455 * ($color[1] - 128) - (0.7169 * ($color[2] - 128))); | |
$rgb[2] = abs($color[0] + 1.7790 * ($color[1] - 128)); | |
return $rgb; | |
} | |
while ($u) | |
{ | |
for ($r = 0;$r < $line;$r++){$b[$r] = fgetc(STDIN);} | |
for ($n = 0;$n < $line;$n++) | |
{ | |
switch ($m % 2) | |
{ | |
case 0: | |
$one = ord($b[$n]); | |
break; | |
case 1: | |
$two = ord($b[$n]); | |
break; | |
} | |
$subcarr = $two - $one; | |
$carrier = $m % 2 ? ord($b[$n]) - $subcarr : ord($b[$n]); | |
switch ($l % 2) | |
{ | |
case 0: | |
$u = 256*($subcarr/128); | |
$uc[$n] = $u; | |
break; | |
case 1: | |
$v = 256*($subcarr/128); | |
$vc[$n] = $v; | |
break; | |
} | |
$y = 256*($carrier/128); | |
$yc[$n] = $y; | |
$m = $m + 1; | |
} | |
for ($x = 0;$x < $line;$x++) | |
{ | |
$final = yuv2rgb([$yc[$x],$uc[$x],$vc[$x]]); | |
if ($final[0] > 256){$final[0]=255-$final[0];} | |
if ($final[1] > 256){$final[1]=255-$final[1];} | |
if ($final[2] > 256){$final[2]=255-$final[2];} | |
echo chr($final[0]).chr($final[1]).chr($final[2]); | |
} | |
$l = $l + 1; | |
if (feof(STDIN)){$u = false;} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment