Для клиентской части я рекомендую проверить плагин imgAreaSelect - он обеспечивает функциональность, которую вы упомянули, и очень настраиваемый.
С точки зрения фактического создания измененного изображения / эскиза, обычно вы отправляете координаты в бэкэнд и выполняете там фактическое обрезание / изменение размера / сохранение, например, с помощью PIL-файла Python или какой-либо другой библиотеки изображений, добавляемой на ваш язык.