Если вы говорите об уменьшении размера изображения до загрузки , вы не сможете использовать PHP, если не используете что-то вроде HTML5 / Flash для предварительной обработки файла перед отправкой.
Что вы хотите сделать, после того, как пользователь загрузит это изображение, убедитесь, что файл является реальным изображением, а затем с помощью некоторой библиотеки (если вы используете каркас, возможно, есть способ изменить размеры изображений), измените размер изображения до любого максимальная ширина или максимальная высота или максимальная ширина и высота, которую вы хотите.
Это уменьшит размер изображения.
По второму вопросу, если я понимаю, вы говорите о том, что когда пользователь загружает 500x500 и вы хотите, чтобы он был 400x250, тогда вы должны масштабировать и обрезать, таким образом, изображение никогда не растягивается, а только пиксели сверху или снизу, вероятно, будут удалены.