【问题标题】:Jcrop squashes image after loaded, applies wrong width加载后 Jcrop 挤压图像,应用错误的宽度
【发布时间】:2013-05-03 07:10:59
【问题描述】:

我正在使用 Jcrop 编辑用户上传的图片,当用户决定编辑他们的图片时,会进行 AJAX 调用以获取用户的原始图片,我的代码如下:

var jcrop_api;

$('.edit_image').on('click', function(e)
{
  var url = $(this).attr('data-url');

  e.preventDefault();

  $.ajax({
    url: url,
    type: 'GET',
    cache: false,
    beforeSend: function()
    {
      // Remove old box in case user uploaded new image bring the latest one
      $('#edit_box').remove();
    },
    success: function(result)
    { 
      if (result.error)
      {
        alert(result.error);
      }
      else
      {

        $('.edit_image_box').html(result);
        $('#edit_box').modal({ show: true});

        $('#original_img').load( function()
        {
          $(this).Jcrop({
            aspectRatio: 1,
            onSelect: updateCoords,
            boxWidth: 700,
            boxHeight: 700
          }, function()
          {
            jcrop_api = this;
          });
        });
      }
    }
  })
});

function updateCoords(c)
{
  $('#x').val(c.x);
  $('#y').val(c.y);
  $('#w').val(c.w);
  $('#h').val(c.h);
};

function checkCoords()
{
  if (parseInt($('#w').val())) return true;
  alert('Please select a crop region then press submit.');
  return false;
};

框被加载,模态显示并且图像被完美加载,但是一旦它完成加载并且Jcrop开始播放,它会完全缩小宽度,留下大约20px宽的图像。

有人可以帮我解决这个问题,几乎 80% 的情况都会发生这种情况。干杯!

【问题讨论】:

    标签: jquery ajax image crop jcrop


    【解决方案1】:

    好奇,你试过了吗:

    function updateCoords(c)
    {
      $('#x').val(c.x);
      $('#y').val(c.y);
      $('#w').val(c.x2);
      $('#h').val(c.y2);
    };
    

    【讨论】:

    • 是的,我刚刚试了一下,得到了相同的结果,Screenshot 就是这样显示的。
    • 作为版主,您应该知道我实际上无法在下面添加评论,因为我的声誉不是 50,因此我看不到该选项。
    • @Anthony 我不是模组(我希望我是...) :) 这只是出现在审核队列中。
    【解决方案2】:

    我找到了解决方案,问题在于使用响应式网格,我使用 Twitter 的 Bootstrap 模式来显示图像裁剪,并且 body 的 css 设置为 max-width: 100%;此设置在获取图像的宽度和高度时会混淆 Jcrop。因此,要解决这个问题,唯一需要做的就是将图像包装在带有 .jcrop 类或您喜欢的任何内容的 DIV 中,并将 css 设置为:

    .jcrop img {
       max-width: none;
    }
    

    这将解决问题,现在如果有人知道如何让 Jcrop 响应,我将非常感谢您的帮助。这里有更详细的讨论github pull

    干杯!

    【讨论】:

    • 谢谢。我遇到了同样的问题,在使用 max-width:none 之后,问题就消失了:-)
    • 作为建议,为了让 Jcrop 响应,我使用了一个模式弹出窗口,其中 Jcrop 已加载。因为这个模态弹出窗口的宽度是可控的,所以更容易处理响应式的东西。
    • 有效!非常非常非常感谢! Twitter 的 Bootstrap 也有同样的问题,但从未想过这是问题所在。
    • 这个问题已经修复,CSS类名现在是.jcrop-holder img(以防你从旧版本更新):github.com/tapmodo/Jcrop/blob/master/css/jquery.Jcrop.css
    猜你喜欢
    • 2021-04-24
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 2013-08-23
    • 2016-04-26
    • 1970-01-01
    相关资源
    最近更新 更多