Masz kilka błędów. Pozwól, że wyjaśnię linia po linii:
if (isset($_GET['banner']))
Jeśli używasz $_GET['banner'], to powinieneś oczywiście przekazywać parametr ?banner=XXX. Myślę, że to jasne. Piszę o tym, bo w przykładzie z poprzedniego posta nazwałeś ten parametr inaczej.
header('Content-Type: image/jpeg');
Powinno być image/png, bo wypluwasz obrazek typu PNG.
imagepng('banners/'.$image);
Funkcja
imagepng jako pierwszy parametr przyjmuje zasób obrazka, a nie string. W zmiennej $image zwróconej przez
imagecreatefrompng masz prawidłowy zasób, wystarczy przekazać go do
imagepng. Nie wiem skąd Ci się wzięło to "banners/". Czy przypadkiem nie chciałeś użyć tego jako ścieżki, w której szukasz plików PNG? Jeśli tak, to powinieneś to wstawić do
imagecreatefrompng, a nie
imagepng.
Mam nadzieję, że sobie poradzisz z poprawieniem kodu na podstawie moich rad.
Jeszcze jedna rada: jeśli otrzymujesz błędy, komentuj tymczasowo linię z ustawianiem Content-type i wejdź w przeglądarce na URL, który ma wyświetlać obrazek. W ten sposób zobaczysz ewentualne błędy składni. Z Content-type ustawionym na obrazek, nie zobaczysz błędów.