Я думаю, здесь могут быть две ошибки. Название заголовка должно быть:
header('Content-Type: image/png');
И поскольку вы, вероятно, хотели снова вывести данные изображения (не сохраняя их обратно), вы должны опустить имя файла:
imagepng($img, NULL, 100);
Если вы все еще получаете ошибку браузера, проверьте, правильно ли загружается файл:
wget -S http://www.example.com/test.php
Проверьте заголовок и размер содержимого. Если ваш PHP-скрипт, например, содержит печально известную спецификацию UTF-8, то не только заголовок будет неправильным, но и мусор, украшая данные PNG, что сделает его недействительным.