header("Content-Type: image/png");
header("Content-Disposition: inline; filename=whatever.png");
the content-disposition header will have your file appear as "whatever.png" in the download/save-as prompt verses "script-that-made-whatever.php"
EDIT: sorry, I don't think I answered the question correctly.
If you are wanting the image to actually appear as .png (in the source or right-click-properties) then I think you have to dynamically create the image first (saving to file) and reference the resulting image later.
The bad thing is that may be useless if you are wanting to externally link to a php-generated-png without running any php first ... there is probably something we're missing, though (there is a solution for almost any problem ... some are just hard as heck to find!!)