cropper.js Создать область обрезки вокруг левого клика?

У меня есть cropper.js, работающий хорошо, когда пользователь щелкает и перетаскивает область изображения.

Как я могу сделать cropper.js обрезать область изображения, когда пользователь просто нажимает на часть изображения?

Например, где бы пользователь ни щелкнул, вокруг этой позиции x, y будет создана область размером 50x50.

В настоящее время я могу использовать метод.setCropData(), чтобы установить положение и размеры рамки обрезки, но я могу заставить его "выстреливать" только как часть события cropend.

Событие cropstart кажется идеальным местом для этого, поскольку оно захватывает первоначальное событие mousedown, но я не могу заставить метод setCropData () запускаться как часть этого события.

Из того, что я могу сказать, для того, чтобы cropper.js мог что-либо делать, он должен проходить через цепочку событий: от начала обрезки до обрезки, а затем, в конечном итоге, до обрезки. Это означает, что мышь нужно перетаскивать в каком-либо направлении. Если пользователь просто щелкнет мышью и все, без дальнейшего перемещения, будет запущено только событие cropstart.

Например, что-то простое для целей тестирования, это не работает:

    cropstart: function(event) {
      let $canvas = $('#canvas-' + $cropperImageIdNumber);

      cropperInstance.setCropBoxData({left: 100, top: 100, width: 50, height: 50});

      console.log('cropstart CropBoxData');
      console.log(cropperInstance.getCropBoxData({}));
    },

После щелчка мышью в журнале консоли отображается, казалось бы, пустая cropBoxData, и на изображение не рисуется обрезка. Я подозреваю, что это потому, что без технически начатого события обрезки нечего устанавливать.

Однако, если я возьму ту же самую вещь и добавлю ее как часть события cropend, она будет работать, как и ожидалось. Разница, однако, в том, что я не могу просто "щелкнуть", а должен перетащить поле обрезки любого размера:

    cropend: function(event) {
      cropperInstance.cropped = true;

      let $canvas = $('#canvas-' + $cropperImageIdNumber);
      cropperInstance.setCropBoxData({left: 100, top: 100, width: 50, height: 50});

      console.log('cropend CropBoxData');
      console.log(cropperInstance.getCropBoxData({}));

Любые идеи, как я могу заставить кроппера "пройти через движения", устанавливая размеры вручную, но с помощью щелчка, а не обычного перетаскивания? Заранее спасибо!

0 ответов

Другие вопросы по тегам