>>613
imagepngの圧縮レベルのデフォルトがあまり高くないんじゃね?

マニュアルには
> 圧縮レベル。0 (圧縮しない) から 9 までの値です。
としか書いてないけど

imagejpegのほうは
> quality はオプションであり、0(品質は最低 ですが、ファイルはより小さい)から100(品質は最高ですが、
> ファイルは 最大)の範囲で指定します。デフォルトは IJG 品質値(75)です。
と書いてるからデフォルトである程度圧縮されてる

header('Content-Type: image/png');
imagepng($im, null, 9);

とかにしたらだいぶ小さくなるんじゃね?