Ich habe seit einiger Zeit an einem Skript gearbeitet, um die Farben von GIF- und PNG-Dateien zu ändern, die besser funktionieren als der PHP-Farbfilter, der nicht beibehalten wird Helligkeit. Ich habe mit dieser kommen, aber es ist nicht ganz richtig funktioniert:PHP GIF/PNG True Colorize-Filter, der Leuchtkraft und Alpha bewahrt
$filename = "images/sprites/".$_GET['sprite'].".png";
$im = imagecreatefrompng($filename);
$nim = imagecreate(imagesx($im), imagesy($im));
$background = imagecolorallocate($nim, 255, 0, 255);
$size = getimagesize($filename);
for($y = 0; $y < imagesy($nim); $y++) {
for($x = 0; $x < imagesx($nim); $x++) {
$rgb = imagecolorat($im, $x, $y);
$colors = imagecolorsforindex($im, $rgb);
$mods = explode("x",$_GET['color']);
$colors['red'] = ($colors['red']/8 + (255 - ((255 - $mods[0] - $colors['red']) * 2)))/2;
$colors['green'] = ($colors['red']/8 + (255 - ((255 - $mods[1] - $colors['green']) * 2)))/2;
$colors['blue'] = ($colors['red']/8 + (255 - ((255 - $mods[2] - $colors['blue']) * 2)))/2;
$r = $colors['red'];
$g = $colors['green'];
$b = $colors['blue'];
if($r < 0) $r = 0;
if($g < 0) $g = 0;
if($b < 0) $b = 0;
if($r > 255) $r = 255;
if($g > 255) $g = 255;
if($b > 255) $b = 255;
if(!isset($color[$r.$g.$b])) {
$color[$r.$g.$b] = imagecolorallocate($nim, $r, $g, $b);
}
imagesetpixel($nim, $x, $y, $color[$r.$g.$b]);
}
}
imagecolortransparent($nim, 1);
header('Content-Type: image/png');
imagepng($nim);
Was die PHP kolorieren Filter und was wollen Sie es tun? Nicht zu vergessen: Was funktioniert in deinem aktuellen Code nicht? – AndreKR
Der aktuelle Code funktioniert, aber es ist nicht ganz richtig. Es bewahrt die Leuchtkraft nicht wirklich und bewahrt keinen Alphakanal. PHP Filter: Colorize wird die Farbe ändern, aber nicht die Leuchtkraft erhalten. Hier ist die Seite dafür: http://php.net/manual/en/function.imagefilter.php –