Moin!
Setz mal bei
imagealphablending ( $target, true );statt "true" ein "false".
Alphablending = true sorgt dafür, dass der Alphawert des Pixels mit dem Hintergrund zusammengerechnet wird zu einer Mischfarbe. Deshalb: Vorher ist der Hintergrund schwarz, der neue Pixel ist 100% transparent. Ergebnis: 100% schwarz.
Mit Alphablending= false wird dieses Mischen abgeschaltet, die Transparenzinformation bleibt erhalten - genau das ist gewünscht.
Steht so auch in der Doku zu imagesavealpha drin, btw. ;)
"You have to unset alphablending (imagealphablending($im, FALSE)), to use it."
- Sven Rautenberg