Вот, убрал всё лишнее, оставил код только для PNG. In the end должна получаться уменьшенная копия шириной в 90px. Пропорциональное изменение высоты нужно для не квадратных аватаров. При отображении на странице ширина задаётся жёстко (90px) а высота в диапазоне от min-height до max-height (для браузеров "понимающих" эти свойства).
// Если размер файла больше 15 КБ
if ( $_FILES['file']['size'] > 15000 )
{
// Открытие переданного изображения
$src = imagecreatefrompng($newFileName);
// Получение размера загруженного изображения
$imgInfo = getimagesize($newFileName);
// Масштабный коэффициент
$scale = 90/$imgInfo[0];
// Новая высота
$newheight = $imgInfo[1]*$scale;
settype($newheight, "integer");
// Создание нового изображения
$dest = imagecreatetruecolor(90, $newheight);
// Копирование изображения
imagecopyresampled($dest, $src, 0, 0, 0, 0, 90, $newheight, $imgInfo[0], $imgInfo[1]);
// Запись изображения в файл
imagepng($dest, $newFileName, 100);
// Освобождение памяти
imagedestroy($dest);
imagedestroy($src);
}
Проблемы возникают только с PNG имеющими прозрачность.