Not really, because PNG is a lossless compression format, so it's not going to start throwing information out to sacrifice image quality for compactness. What you have got are choices between truecolour or various palette sizes. The original image was palette-based? If the smaller image uses truecolour (which it would be if you're using imagecreatetruecolor), then that would make a significant difference. Between imagecreate/imagecreatetruecolor and imagecopyresized/imagecopyresampled, there are four possible combinations to play with. You could use imagecopypalette() or imagetruecolortopalette() also.