Ну, даже если бы другие пытались отговорить вас от этого, это, вероятно, не было бы так сложно.
На стороне клиента вы определяете div, который перемещается / изменяет размер по изображению с прозрачностью, которую можно масштабировать для кадрирования.
Переместите, я предполагаю, что это применимо только к тексту, поэтому вы динамически создаете перетаскиваемые отрезки на стороне клиента, все еще легко.
Масштаб, у меня нет идеи простого пользовательского интерфейса, чтобы сделать это.
Когда вы хотите обновить свое изображение, вы сериализуете свои данные (положение делительной области обрезки и положение ваших текстовых диапазонов / масштабирования относительно позиции к изображению.) Затем, используя json или что-либо подобное, вам нужно , вы передаете данные на сервер.
Затем на сервере, используя python / PIL, вы воспроизводите преобразование, которое вы сериализовали.