Я не знаю, как это делает Facebook, но я бы использовал jquery-ui resizeable()
и draggable()
. Вы можете установить изображение в div с точной шириной изображения и иметь второй перетаскиваемый / изменяемый размер div, расположенный поверх изображения (используя более высокий z-индекс). Таким образом, у вас есть полупрозрачная область обрезки, которую пользователь может перемещать и регулировать. Вы можете установить оба метода на родительский div, чтобы они не могли перетаскивать или изменять размеры за пределы изображения.
Когда они готовы к обрезке, координаты каждого угла могут быть отправлены через ajax на сервер. Затем сервер может запустить любой инструмент для обрезки изображений (в php я бы использовал gmagic -> cropimage()
), и задача выполнена.
Сложная задача - решить, как показать пользователю готовый продукт. Я бы определенно рассмотрел вопрос о сохранении нового обрезанного изображения в папке tmp на случай, если они передумают. Но если вы сделаете это, вы можете попросить ajax обновить src элемента изображения, чтобы они могли видеть, что они сделали. Если им это нравится, они нажимают «сохранить изменения», и через ajax отправляется еще один запрос на замену оригинала на тот, что находится в папке tmp.
Antoher, довольно неряшливо, вариант просто использовать pxlr. У них есть API разработчика , который позволяет вызывать инструменты своего сайта через JavaScript. Вы можете настроить функции, которые видит пользователь, и сохранить их в значении «reffer» на своем сервере. Не уверен, как настроить безопасность для этого, но я уверен, что сайт входит в него.