I am simply trying to return an PNG image through PHP, but I have a problem with the transparency not showing right. (Basically one PHP file will be capable of returning any of my images.)
I use simple code to return the image:
<?php
$im = imagecreatefrompng("images/fakehairsalon.png");
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
?>
The original image looks like this:

And the one returned via PHP (and that piece of code) looks like this:

Is there anything I can do to prevent this and make the image come through normal?
As explained in a user comment, you must do this:
Update: This answer was assuming that your code is an except from a bigger script you are using to do on-the-fly image manipulation.
If you don’t want to change the original file, this is a plain waste of memory and CPU cycles. You can use file system functions to read it as a regular file, such as readfile().
It’s also worth noting that using PHP to deliver a file only makes sense if you want to do something else as well, such as: