Я делал такой премиум доп otfm-watermark-and-crop - загугли найдешь - если интересен код.
А вот принцип - ВП фильтр wp_generate_attachment_metadata
Берешь размер large у фотки - этот размер у тебя указан в настройках медиабиблиотеки ВП.
Вот например у меня он 1900х1000
Хранить фотки большего размера мне не нужно - я беру этот размер - заменяю им оригинал (full) и удаляю атрибут large из массива. Таким образом имею все зарегистрированные размеры и full размер (тот самый прежний large), а самого размера large в медиабиблиотеки как бы нет. Есть оригинал ровно такого размера.
В общем юзеры ко мне грузят обложки, аватарки по 4-5 мегабайт, а на выходе получаю я максимум изображение размером 1900х1000 и размером в 300-500 килобайт. У меня не фотохостинг чтоб хранить оригиналы, а юзеров я не хочу ограничивать - сами понимаете телефоны сейчас фоткают 5000 пикселей фотки, и юзерам это удобно что у меня кропается так.
А если мне инфографику длинную надо загрузить - функция имеет стоп слово. И по нему останавливает кроп