Ваше решение звучит как наиболее логичный способ сделать это, если вы хотите, чтобы сервер выполнял обрезку.
Однако вы можете попросить пользователей с поддерживаемыми HTML5 браузерами обрезать холст и отправить вам окончательное обрезанное изображение в качестве данных. Единственным преимуществом этого варианта является то, что он может взять некоторую нагрузку на ваши серверы, но это в основном означает, что вам потребуется реализовать как ваше решение, так и это, если только вы не ожидаете, что все ваши пользователи будут использовать браузеры HTML5.
Кроме того, вам все равно потребуется выполнить некоторые проверки изображения со стороны сервера, даже если они отправили холст, который предположительно должен быть обрезан (пользователи всегда могут обойти javascripts). Технически пользователь будет загружать изображение также дважды, если только холст не сможет получить доступ к локальным файлам, определенным пользователем, без необходимости загружать их перед редактированием (я, конечно, мог бы подумать, что в браузерах будут приняты меры безопасности для предотвращения этого).