0

我从具有此配置的应用程序的 Crop Avatar 示例开始

this.$img.cropper({
          preview: this.$avatarPreview.selector,
          viewMode: 2,
          dragMode: 'move',
          guides: false,
          highlight: false,
          autoCropArea: 1,
          movable: true,
          strict: true,
          cropBoxResizable: false,
          minCropBoxWidth: 1000,
          minCropBoxHeight: 1000,
          zoom: function (e) {
            if (e.ratio > 1) {
              e.preventDefault();
              $(this).cropper('zoomTo', 1);
            }
          },

像这样使用它我可以缩放到 1,但对于较小的图像来说太多了。例如,可以将 1200x1200 的图像以 1 的比例缩放到将其保存到 1000x1000 的级别,它会损失很多质量。我尝试将其缩小到 1 以下,$(this).cropper('zoomTo', 1);但它会产生奇怪的效果。如果我放大很多,它会将我带到原始大小。

我的问题是如何阻止缩放到 x0.2 或合理值。谢谢

4

1 回答 1

0

这个答案来自开发cropper的fengyuanchen,我认为适合我在不同设备上对cropbox不同分辨率的需求

$().cropper({
  zoom: function (e) {
    var container = $(this).cropper('getContainerData');

    // Desktop
    if (container.width > 1120) {

      // Zoom in
      if (e.ratio > e.oldRatio) {
        if (e.ratio > 10) {
          e.preventDefault();
        }

      // Zoom out
      } else {
        if (e.ratio < 0.1) {
          e.preventDefault();
        }
      }

    // Laptop
    } else if (container.width > 992) {
      // ...

    // Tablet
    } else if (container.width > 768) {
      // ...

    // Phone
    } else {
      // ...
    }
  }
});
于 2015-12-28T12:46:38.457 回答