Mam pewien problem z biblioteką GD2 w PHP. Chcę wyświetlić kilka grafik z przezroczystością jako jeden rysunek, ale gdy obrazków jest więcej niż 2 przezroczystość znika i/lub którejś z grafik nie widać. Sprawę może komplikować fakt, że tło do tego generowanego obrazka jest wycinane z większej grafiki.
Może dla wyjaśnienia trochę kodu:
Kod
<?php
$MapaURL = '../mapy/tiles/'.$_GET['mapa'];
$Stan = $_GET['stan'];
$Nr = $_GET['nr'];
$Nr = $Nr+0;
$Szerokosc = 40;
$Wysokosc = 40;
// Twórz grafikę kafla
$Kafel = imagecreatetruecolor($Szerokosc, $Wysokosc);
imagealphablending($Kafel, false);
imagesavealpha($Kafel, true);
// Kopiuj grafikę mapy
$Mapa = imagecreatefrompng($MapaURL);
$PozX = ( ( $Nr % ( imagesx($Mapa) / $Szerokosc ) ) * $Szerokosc );
$PozY = ( (int)( $Nr / ( imagesx($Mapa) / $Szerokosc ) ) * $Wysokosc );
imagecopymerge($Kafel, $Mapa, 0, 0, $PozX, $PozY, $Szerokosc, $Wysokosc, 100);
// Wyświetlanie
header('Content-type: image/png');
imagepng($Kafel);
imagedestroy($Kafel);
imagedestroy($Mapa);
?>
Taki obrazek wyświetla się prawidłowo, jednak przy jakiejkolwiek próbie wgrania (imagecreatefrompng + imagecopy/imagecopymerge) innego pliku z ustawieniem na różne sposoby i w różnych miejscach, na różnych obrazkach kanału alfa zawsze jest pomijana przezroczystość i widoczna jest jedynie ostatnia grafika wklejona metodą imagecopymerge..$MapaURL = '../mapy/tiles/'.$_GET['mapa'];
$Stan = $_GET['stan'];
$Nr = $_GET['nr'];
$Nr = $Nr+0;
$Szerokosc = 40;
$Wysokosc = 40;
// Twórz grafikę kafla
$Kafel = imagecreatetruecolor($Szerokosc, $Wysokosc);
imagealphablending($Kafel, false);
imagesavealpha($Kafel, true);
// Kopiuj grafikę mapy
$Mapa = imagecreatefrompng($MapaURL);
$PozX = ( ( $Nr % ( imagesx($Mapa) / $Szerokosc ) ) * $Szerokosc );
$PozY = ( (int)( $Nr / ( imagesx($Mapa) / $Szerokosc ) ) * $Wysokosc );
imagecopymerge($Kafel, $Mapa, 0, 0, $PozX, $PozY, $Szerokosc, $Wysokosc, 100);
// Wyświetlanie
header('Content-type: image/png');
imagepng($Kafel);
imagedestroy($Kafel);
imagedestroy($Mapa);
?>
Kolejny problem to brak możliwości nałożenia wielu filtrów na obrazek z kilkoma (dwoma) rysunkami z kanałem alfa, ale wydaje mi się, że gdy pierwszy problem zostanie rozwiązany to i ten przestanie istnieć.
Czy wie ktoś może w czym leży problem?