無限ループしてしまいます。
ImageJpegで保存した際、キャッシュ関係か何かわかりませんが、反映されていないということでしょうか?

 $q = 75;
 do {
     ImageJpeg($out, $savefile, $q);
     $q = $q - 5;
 } while(filesize($savefile) > 9000);