Created
March 6, 2019 09:58
-
-
Save ninsuo/b691aa9f82d438f4ed64f578294f31fe to your computer and use it in GitHub Desktop.
degrade.php - the most ugly code i ever made in life
This file contains hidden or 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 | |
// ------------------------------------------ | |
// DEGRADE ( GD ) | |
// ------------------------------------------ | |
// --------------------------------------------- | |
// Allowed GET arguments: | |
// a -> applies transparency to background color | |
// c -> colors (use '-' for color separator) | |
// g -> background color (for circle box) | |
// h -> horizontal box size (height) | |
// r -> rotation (0 = 0 ; 1 = 90 ; 2 = 180 ; 3 = 270) | |
// t -> type (1 = ||| ; 2 = \\\ ; 3 = x ; 4 = o) | |
// v -> vertical box size (width) | |
// --------------------------------------------- | |
// Usage example: | |
// degrade.php?&h=500&v=500&c=FF0000-00FF00-0000FF-FFFF00-FFFFFF-FF00FF-00FFFF&t=1&r=1 | |
// degrade.php?&h=500&v=500&c=FF0000-00FF00-0000FF-FFFF00-00FFFF-FF00FF-FFFFFF&t=2&r=2 | |
// degrade.php?&h=500&v=300&c=FF0000-0000FF-00FF00-FF00FF-FFFF00-FFFFFF-00FFFF&t=3&r=3 | |
// degrade.php?&h=500&v=500&c=FF0000-00FF00-0000FF-FFFF00-00FFFF-FF00FF&t=4&r=1&g=424242&a=1 | |
// --------------------------------------------- | |
// --------------------------------------------- | |
// Parsing parameters | |
// --------------------------------------------- | |
// 'a' (transparency) | |
$alpha = false; | |
if (isset($_GET['a']) && ($_GET['a'] == 1)) { | |
$alpha = true; | |
} | |
// 'c' (colors) | |
if (!isset($_GET['c'])) { | |
$c = "000000-FFFFFF"; | |
} | |
else { | |
$c = trim(addslashes($_GET['c'])); | |
} | |
$c = explode("-", $c); | |
if (count($c) < 2) { | |
$c[0] = "000000"; | |
$c[1] = "FFFFFF"; | |
} | |
$count = (count($c) - 1); | |
for ($i = 0; ($i <= $count); $i++) { | |
$c[$i] = (int)hexdec($c[$i]); | |
if ($c[$i] > 0xFFFFFF) { | |
$c[$i] = 0; | |
} | |
} | |
// 'h' (height) | |
if (!isset($_GET['h'])) { | |
$h = 100; | |
} else { | |
$h = trim(addslashes($_GET['h'])); | |
} | |
if (!is_numeric($h)) { | |
$h = 100; | |
} | |
if ($h > 2000 || $h < 1) { | |
$h = 100; | |
} | |
// 'v' (width) | |
if (!isset($_GET['v'])) { | |
$v = 100; | |
} else { | |
$v = trim(addslashes($_GET['v'])); | |
} | |
if (!is_numeric($v)) { | |
$v = 100; | |
} | |
if ($v > 2000 || $v < 1) { | |
$v = 100; | |
} | |
// 't' (type) | |
if (!isset($_GET['t'])) { | |
$t = 1; | |
} else { | |
$t = trim(addslashes($_GET['t'])); | |
} | |
if ((!is_numeric($t)) || ($t < 1) || ($t > 4)) { | |
$t = 1; | |
} | |
// 'r' (rotation) | |
if (!isset($_GET['r'])) { | |
$r = 1; | |
} else { | |
$r = trim(addslashes($_GET['r'])); | |
} | |
if ((!is_numeric($r)) || ($r < 1) || ($r > 4)) { | |
$r = 1; | |
} | |
// 'g' (background) | |
if (!isset($_GET['g'])) { | |
$g = 4342338; | |
} | |
else { | |
$g = hexdec(trim(addslashes($_GET['g']))); | |
} | |
// --------------------------------------------- | |
// Functions | |
// --------------------------------------------- | |
function reverse($old) { | |
$c = NULL; | |
$n = 0; | |
for ($i = (count($old) - 1); ($i >= 0); $i--) { | |
$c[$n++] = $old[$i]; | |
} | |
return ($c); | |
} | |
function callibrate($img, $red, $green, $blue) | |
{ | |
if ($red > 0x0A) { | |
$red -= 0x0A; | |
} | |
if ($green > 0x0A) { | |
$green -= 0x0A; | |
} | |
if ($blue > 0x0A) { | |
$blue -= 0x0A; | |
} | |
return (ImageColorAllocate($img, $red, $green, $blue)); | |
} | |
// --------------------------------------------- | |
// Processing ... | |
// --------------------------------------------- | |
// creating image and filling background | |
Header("Content-type: image/png"); | |
$img = ImageCreateTrueColor($h, $v); | |
ImageColorAllocate($img, ($g / (256 * 256)), (($g / 256) % 256), ($g % 256)); | |
ImageSetThickness($img, 1); | |
// type = linear | |
if ($t == 1) { | |
// horizontal | |
if (($r == 1) || ($r == 3)) { | |
if ($r == 3) { | |
$c = reverse($c); | |
} | |
// c1 and c2 are calculated according to image width | |
for ($k = 0; ($k < $count); $k++) { | |
$c1 = $c[($k + 1)]; | |
$c2 = $c[$k]; | |
// degrade from c1 to c2 | |
for ($y = (($k * $v) / $count); ($y < ((($k + 1) * $v) / $count)); $y++) { | |
$red = ((((($c1 / 65536) * ((1024 * ($y - ($k * $v / $count))) / $v * $count)) + (($c2 / 65536) * (1024 - ((1024 * ($y - ($k * $v / $count))) / $v * $count))))) / 1024); | |
$green = ((((($c1 / 256 % 256) * ((1024 * ($y - ($k * $v / $count))) / $v * $count)) + (($c2 / 256 % 256) * (1024 - ((1024 * ($y - ($k * $v / $count))) / $v * $count))))) / 1024); | |
$blue = ((((($c1 % 256) * ((1024 * ($y - ($k * $v / $count))) / $v * $count)) + (($c2 % 256) * (1024 - ((1024 * ($y - ($k * $v / $count))) / $v * $count))))) / 1024); | |
$color = callibrate($img, $red, $green, $blue); | |
ImageLine($img, 0, $y, $h, $y, $color); | |
} | |
} | |
} | |
// vertical | |
if (($r == 2) || ($r == 4)) { | |
if ($r == 4) { | |
$c = reverse($c); | |
} | |
// c1 and c2 are calculated according to image width | |
for ($k = 0; ($k < $count); $k++) { | |
$c1 = $c[($k + 1)]; | |
$c2 = $c[$k]; | |
// degrade from c1 to c2 | |
for ($x = (($k * $h) / $count); ($x < ((($k + 1) * $h) / $count)); $x++) { | |
$red = ((((($c1 / 65536) * ((1024 * ($x - ($k * $h / $count))) / $h * $count)) + (($c2 / 65536) * (1024 - ((1024 * ($x - ($k * $h / $count))) / $h * $count))))) / 1024); | |
$green = ((((($c1 / 256 % 256) * ((1024 * ($x - ($k * $h / $count))) / $h * $count)) + (($c2 / 256 % 256) * (1024 - ((1024 * ($x - ($k * $h / $count))) / $h * $count))))) / 1024); | |
$blue = ((((($c1 % 256) * ((1024 * ($x - ($k * $h / $count))) / $h * $count)) + (($c2 % 256) * (1024 - ((1024 * ($x - ($k * $h / $count))) / $h * $count))))) / 1024); | |
$color = callibrate($img, $red, $green, $blue); | |
ImageLine($img, $x, 0, $x, $v, $color); | |
} | |
} | |
} | |
} | |
// type = diagonal | |
if ($t == 2) { | |
$hyp = sqrt(($h * $h) + ($v * $v)); | |
if ((($count + 1) % 2) == 1) { | |
$color = callibrate($img, ($c[($count / 2)] / 65536), (($c[($count / 2)] / 256) % 256), ($c[($count / 2)] % 256)); | |
ImageLine($img, 0, 0, $h, $v, $color); | |
} | |
$count = $count / 2; | |
// c1 and c2 are calculated according to image width | |
for ($k = 0; ($k < $count); $k++) { | |
$c1 = $c[($k + 1)]; | |
$c2 = $c[$k]; | |
$c3 = $c[(($count * 2) - ($k + 1))]; | |
$c4 = $c[(($count * 2) - $k)]; | |
// drawing lines using thales | |
for ($dist = (($k * $hyp) / $count); ($dist <= ((($k + 1) * $hyp) / $count)); $dist++) { | |
$x = (((($dist * 1024) / $hyp) * $h) / 1024); | |
$y = (((($dist * 1024) / $hyp) * $v) / 1024); | |
$red = ((((($c1 / 65536) * ((1024 * ($dist - ($k * $hyp / $count))) / $hyp * $count)) + (($c2 / 65536) * (1024 - ((1024 * ($dist - ($k * $hyp / $count))) / $hyp * $count))))) / 1024); | |
$green = ((((($c1 / 256 % 256) * ((1024 * ($dist - ($k * $hyp / $count))) / $hyp * $count)) + (($c2 / 256 % 256) * (1024 - ((1024 * ($dist - ($k * $hyp / $count))) / $hyp * $count))))) / 1024); | |
$blue = ((((($c1 % 256) * ((1024 * ($dist - ($k * $hyp / $count))) / $hyp * $count)) + (($c2 % 256) * (1024 - ((1024 * ($dist - ($k * $hyp / $count))) / $hyp * $count))))) / 1024); | |
$color1 = callibrate($img, $red, $green, $blue); | |
$red = ((((($c3 / 65536) * ((1024 * ($dist - ($k * $hyp / $count))) / $hyp * $count)) + (($c4 / 65536) * (1024 - ((1024 * ($dist - ($k * $hyp / $count))) / $hyp * $count))))) / 1024); | |
$green = ((((($c3 / 256 % 256) * ((1024 * ($dist - ($k * $hyp / $count))) / $hyp * $count)) + (($c4 / 256 % 256) * (1024 - ((1024 * ($dist - ($k * $hyp / $count))) / $hyp * $count))))) / 1024); | |
$blue = ((((($c3 % 256) * ((1024 * ($dist - ($k * $hyp / $count))) / $hyp * $count)) + (($c4 % 256) * (1024 - ((1024 * ($dist - ($k * $hyp / $count))) / $hyp * $count))))) / 1024); | |
$color2 = callibrate($img, $red, $green, $blue); | |
// rotate = 0* | |
if ($r == 1) { | |
ImageLine($img, $x, 0, 0, $y, $color1); | |
ImageLine($img, ($h - $x), $v, $h, ($v - $y), $color2); | |
} | |
// rotate = 90* | |
else if ($r == 2) { | |
ImageLine($img, ($h - $x), 0, $h, $y, $color1); | |
ImageLine($img, 0, ($v - $y), $x, $v, $color2); | |
} | |
// rotate = 180* | |
else if ($r == 3) { | |
ImageLine($img, ($h - $x), $v, $h, ($v - $y), $color1); | |
ImageLine($img, $x, 0, 0, $y, $color2); | |
} | |
// rotate = 270* | |
else { | |
ImageLine($img, 0, ($v - $y), $x, $v, $color1); | |
ImageLine($img, ($h - $x), 0, $h, $y, $color2); | |
} | |
} | |
} | |
} | |
// type = square | |
if ($t == 3) { | |
if (($r == 2) || ($r == 4)) { | |
$c = reverse($c); | |
} | |
$hyp = sqrt((($h / 2) * ($h / 2)) + (($v / 2) * ($v / 2))); | |
// c1 and c2 are calculated according to image width | |
for ($k = 0; ($k < $count); $k++) { | |
$c1 = $c[($k + 1)]; | |
$c2 = $c[$k]; | |
// filling square by running on square hypotenuse | |
for ($dist = (($k * $hyp) / $count); ($dist <= ((($k + 1) * $hyp) / $count)); $dist++) { | |
$red = ((((($c1 / 65536) * ((1024 * ($dist - ($k * $hyp / $count))) / $hyp * $count)) + (($c2 / 65536) * (1024 - ((1024 * ($dist - ($k * $hyp / $count))) / $hyp * $count))))) / 1024); | |
$green = ((((($c1 / 256 % 256) * ((1024 * ($dist - ($k * $hyp / $count))) / $hyp * $count)) + (($c2 / 256 % 256) * (1024 - ((1024 * ($dist - ($k * $hyp / $count))) / $hyp * $count))))) / 1024); | |
$blue = ((((($c1 % 256) * ((1024 * ($dist - ($k * $hyp / $count))) / $hyp * $count)) + (($c2 % 256) * (1024 - ((1024 * ($dist - ($k * $hyp / $count))) / $hyp * $count))))) / 1024); | |
$color = callibrate($img, $red, $green, $blue); | |
ImageLine($img, (($h * $dist) / (2 * $hyp)), (($v * $dist) / (2 * $hyp)), (($h * $dist) / (2 * $hyp)), ($v - (($v * $dist) / (2 * $hyp))), $color); | |
ImageLine($img, ($h - (($h * $dist) / (2 * $hyp))), (($v * $dist) / (2 * $hyp)), ($h - (($h * $dist) / (2 * $hyp))), ($v - (($v * $dist) / (2 * $hyp))), $color); | |
ImageLine($img, (($h * $dist) / (2 * $hyp)), (($v * $dist) / (2 * $hyp)), ($h - (($h * $dist) / (2 * $hyp))), (($v * $dist) / (2 * $hyp)), $color); | |
ImageLine($img, (($h * $dist) / (2 * $hyp)), ($v - (($v * $dist) / (2 * $hyp))), ($h - (($h * $dist) / (2 * $hyp))), ($v - (($v * $dist) / (2 * $hyp))), $color); | |
} | |
} | |
} | |
// type = circle | |
if ($t == 4) { | |
ImageFilledRectangle($img, 0, 0, ($h - 1), ($v - 1), $g); | |
// if alpha is ordered, background color becomes transparent | |
if ($alpha == true) { | |
ImageTrueColorToPalette($img, FALSE, 256); | |
$transparency = ImageColorAt($img, 0, 0); | |
ImageColorTransparent($img, $transparency); | |
ImageAlphaBlending($img, TRUE); | |
ImageCopyMerge($img, $img, 0, 0, 0, 0, $h, $v, 100); | |
} | |
if (($r == 1) || ($r == 3)) { | |
$c = reverse($c); | |
} | |
$v /= 2; | |
// c1 and c2 are calculated according to image width | |
for ($k = ($count - 1); ($k != -1); $k--) { | |
$c1 = $c[($k + 1)]; | |
$c2 = $c[$k]; | |
// draws circles, they ray runs on image's (height / 2) | |
for ($y = ((($k + 1) * $v) / $count); ($y > (($k * $v) / $count)); $y--) { | |
$red = ((((($c1 / 65536) * ((1024 * ($y - ($k * $v / $count))) / $v * $count)) + (($c2 / 65536) * (1024 - ((1024 * ($y - ($k * $v / $count))) / $v * $count))))) / 1024); | |
$green = ((((($c1 / 256 % 256) * ((1024 * ($y - ($k * $v / $count))) / $v * $count)) + (($c2 / 256 % 256) * (1024 - ((1024 * ($y - ($k * $v / $count))) / $v * $count))))) / 1024); | |
$blue = ((((($c1 % 256) * ((1024 * ($y - ($k * $v / $count))) / $v * $count)) + (($c2 % 256) * (1024 - ((1024 * ($y - ($k * $v / $count))) / $v * $count))))) / 1024); | |
$color = callibrate($img, $red, $green, $blue); | |
$x = ((($y * 1024) / $v) * ($h / 1024)); | |
ImageFilledEllipse($img, ($h / 2), $v, $x, ($y * 2), $color); | |
} | |
} | |
} | |
// dumping image | |
ImagePng($img); | |
ImageDestroy($img); |
This file contains hidden or 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 | |
/* | |
** Degrade - usage examples | |
*/ | |
// ---------------------------------------------------------------- | |
function getLink($width, $height, $colors, $type, $rotate, $background, $transparency) | |
{ | |
return ('degrade.php?&h=' . $width . '&v=' . $height . '&c=' . $colors . '&t=' . $type . '&r=' . $rotate . '&g=' . $background . '&a=' . $transparency); | |
} | |
function dumpImg($width, $height, $colors, $type, $rotate, $background="424242", $transparency="0") | |
{ | |
echo '<br/>'; | |
echo '<img src="' . getLink($width, $height, $colors, $type, $rotate, $background, $transparency) . '" />'; | |
echo '<br/><br/>'; | |
} | |
// ---------------------------------------------------------------- | |
echo '<body bgcolor="#DDDDDD">'; | |
echo '<table>'; | |
// Linear degrade (type = 1) | |
echo '<tr>'; | |
echo '<td colspan="4"><span style="font-size: 30px;">A - Linear</span></td>'; | |
echo '</tr>'; | |
echo '<tr>'; | |
echo '<td align="center">'; | |
dumpImg($width=250, | |
$height=250, | |
$colors="FF0000-00FF00-0000FF-FFFF00-00FFFF-FF00FF", | |
$type=1, | |
$rotate=1); | |
echo 'Rotation: 0*'; | |
echo '</td>'; | |
echo '<td align="center">'; | |
dumpImg($width=250, | |
$height=250, | |
$colors="FF0000-00FF00-0000FF-FFFF00-00FFFF-FF00FF", | |
$type=1, | |
$rotate=2); | |
echo 'Rotation: 90*'; | |
echo '</td>'; | |
echo '<td align="center">'; | |
dumpImg($width=250, | |
$height=250, | |
$colors="FF0000-00FF00-0000FF-FFFF00-00FFFF-FF00FF", | |
$type=1, | |
$rotate=3); | |
echo 'Rotation: 180*'; | |
echo '</td>'; | |
echo '<td align="center">'; | |
dumpImg($width=250, | |
$height=250, | |
$colors="FF0000-00FF00-0000FF-FFFF00-00FFFF-FF00FF", | |
$type=1, | |
$rotate=4); | |
echo 'Rotation: 270*'; | |
echo '</td>'; | |
echo '</tr>'; | |
// Diagonal degrade (type = 2) | |
echo '<tr>'; | |
echo '<td colspan="4"> </td>'; | |
echo '</tr>'; | |
echo '<tr>'; | |
echo '<td colspan="4"><span style="font-size: 30px;">B - Diagonal</span></td>'; | |
echo '</tr>'; | |
echo '<tr>'; | |
echo '<td align="center">'; | |
dumpImg($width=250, | |
$height=250, | |
$colors="FF0000-00FF00-0000FF-FFFF00-00FFFF-FF00FF", | |
$type=2, | |
$rotate=1); | |
echo 'Rotation: 0*'; | |
echo '</td>'; | |
echo '<td align="center">'; | |
dumpImg($width=250, | |
$height=250, | |
$colors="FF0000-00FF00-0000FF-FFFF00-00FFFF-FF00FF", | |
$type=2, | |
$rotate=2); | |
echo 'Rotation: 90*'; | |
echo '</td>'; | |
echo '<td align="center">'; | |
dumpImg($width=250, | |
$height=250, | |
$colors="FF0000-00FF00-0000FF-FFFF00-00FFFF-FF00FF", | |
$type=2, | |
$rotate=3); | |
echo 'Rotation: 180*'; | |
echo '</td>'; | |
echo '<td align="center">'; | |
dumpImg($width=250, | |
$height=250, | |
$colors="FF0000-00FF00-0000FF-FFFF00-00FFFF-FF00FF", | |
$type=2, | |
$rotate=4); | |
echo 'Rotation: 270*'; | |
echo '</td>'; | |
echo '</tr>'; | |
// Square degrade (type = 3) | |
echo '<tr>'; | |
echo '<td colspan="4"> </td>'; | |
echo '</tr>'; | |
echo '<tr>'; | |
echo '<td colspan="4"><span style="font-size: 30px;">C - Square</span></td>'; | |
echo '</tr>'; | |
echo '<tr>'; | |
echo '<td align="center">'; | |
dumpImg($width=250, | |
$height=250, | |
$colors="FF0000-00FF00-0000FF-FFFF00-00FFFF-FF00FF", | |
$type=3, | |
$rotate=1); | |
echo 'Rotation: 1 (normal)'; | |
echo '</td>'; | |
echo '<td align="center">'; | |
dumpImg($width=250, | |
$height=250, | |
$colors="FF0000-00FF00-0000FF-FFFF00-00FFFF-FF00FF", | |
$type=3, | |
$rotate=2); | |
echo 'Rotation: 2 (reverse)'; | |
echo '</td>'; | |
echo '<td align="center"> </td>'; | |
echo '<td align="center"> </td>'; | |
echo '</tr>'; | |
// Circle degrade (type = 4) | |
echo '<tr>'; | |
echo '<td colspan="4"> </td>'; | |
echo '</tr>'; | |
echo '<tr>'; | |
echo '<td colspan="4"><span style="font-size: 30px;">D - Circle</span></td>'; | |
echo '</tr>'; | |
echo '<tr>'; | |
echo '<td align="center">'; | |
dumpImg($width=250, | |
$height=250, | |
$colors="FF0000-00FF00-0000FF-FFFF00-00FFFF-FF00FF", | |
$type=4, | |
$rotate=1); | |
echo 'Rotation: 1 (normal)'; | |
echo '</td>'; | |
echo '<td align="center">'; | |
dumpImg($width=250, | |
$height=250, | |
$colors="FF0000-00FF00-0000FF-FFFF00-00FFFF-FF00FF", | |
$type=4, | |
$rotate=2); | |
echo 'Rotation: 2 (reverse)'; | |
echo '</td>'; | |
echo '<td align="center">'; | |
dumpImg($width=250, | |
$height=250, | |
$colors="FF0000-00FF00-0000FF-FFFF00-00FFFF-FF00FF", | |
$type=4, | |
$rotate=1, | |
$background="DDDD55", | |
$transparency=0); | |
echo 'With defined background'; | |
echo '</td>'; | |
echo '<td align="center">'; | |
dumpImg($width=250, | |
$height=250, | |
$colors="FF0000-00FF00-0000FF-FFFF00-00FFFF-FF00FF", | |
$type=4, | |
$rotate=2, | |
$background="000000", | |
$transparency=1); | |
echo 'With transparent background'; | |
echo '</td>'; | |
echo '</tr>'; | |
echo '</table>'; | |
echo '<br/><br/>'; | |
// OTHER EXAMPLES | |
echo '<div style="font-size: 30px;"><span style="color: #FF0000;">Other</span> examples</div>'; | |
// the text box | |
echo '<br/><br/>'; | |
$bigDiv = getLink($width=500, | |
$height=150, | |
$colors="ffffff-7777aa-ffffff-7777aa-ffffff", | |
$type=2, | |
$rotate=1, | |
$background="", | |
$transparency=0); | |
$headDiv = getLink($width=500, | |
$height=20, | |
$colors="000055-7777aa-000055", | |
$type=1, | |
$rotate=1, | |
$background="", | |
$transparency=0); | |
echo '<div style="width: 500px; height: 150px; background-image: url(' . $bigDiv . '); border: 2px solid #000055;">'; | |
echo '<div style="width: 500px; height: 20px; background-image: url(' . $headDiv . ');">'; | |
echo '<font color="white">A beatiful title</font>'; | |
echo '</div>'; | |
echo 'A beatiful templatable text box'; | |
echo '</div>'; | |
echo '<br/><br/>'; | |
// some colors | |
dumpImg($width=500, | |
$height=500, | |
$colors="c70e2f-94040d-f550a9-e18ebb-fdd7ed-000000-0e0769-3f16bf-5babeb-7ac8f5-c4f5fb-000000-a30a3b-c5113f-f33a0b-f97242-f4b27a-fbd3ba-000000-590773-8d0ea9-c53ae3-ec70f4-ebbdf9-000000-55061f-000000", | |
$type=2, | |
$rotate=1); | |
echo '<br/><br/>'; | |
echo '</body>'; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment