2013-05-08 28 views
6

Tôi đang sử dụng Jcrop để chỉnh sửa hình ảnh do người dùng tải lên, khi người dùng quyết định chỉnh sửa hình ảnh của họ, cuộc gọi AJAX được thực hiện để lấy hình ảnh ban đầu của người dùng, mã của tôi như sau:Jcrop squashes hình ảnh sau khi tải, áp dụng chiều rộng sai

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; 
}; 

hộp được nạp, các phương thức được hiển thị và hình ảnh được nạp một cách hoàn hảo, nhưng một khi nó kết thúc bốc Jcrop nói đến chơi nó co lại chiều rộng hoàn toàn, để lại một hình ảnh của khoảng 20px rộng.

Ai đó có thể giúp tôi với điều này, gần 80% số lần điều này xảy ra. Chúc mừng!

Trả lời

-2

tò mò, cậu thử:

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

Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, hãy để lại nhận xét bên dưới bài đăng của họ - bạn luôn có thể nhận xét về bài đăng của riêng bạn và sau khi bạn có đủ [danh tiếng] (http://stackoverflow.com/faq#reputation), bạn sẽ có thể để [bình luận về bất kỳ bài viết] (http://stackoverflow.com/privileges/comment). – Undo

+0

Có, tôi vừa thử nó và tôi nhận được kết quả tương tự, [Ảnh chụp màn hình] (http://www.guevaraguerra.com/Screen%20Shot%202013-05-08%20at%207.09.25%20PM.png) đó là cách nó xuất hiện. – CupOfJoe

+0

với tư cách là người kiểm duyệt, bạn nên biết rằng tôi không thể thêm nhận xét dưới đây vì tùy chọn đó không xuất hiện với tôi vì danh tiếng của tôi không phải là 50. – carrabino

9

Tôi tìm thấy giải pháp cho điều này, vấn đề là với việc sử dụng lưới đáp ứng, tôi đang sử dụng Bootstrap phương thức của Twitter để hiển thị các cắt xén hình ảnh, và css cho nội dung được đặt thành độ rộng tối đa: 100%; cài đặt này gây nhầm lẫn với Jcrop khi thu được chiều rộng và chiều cao của hình ảnh. Do đó để giải quyết việc này điều duy nhất cần thiết là để bọc các hình ảnh trong một DIV với .jcrop lớp hoặc bất cứ điều gì bạn thích và thiết lập css để:

.jcrop img { 
    max-width: none; 
} 

này sẽ giải quyết vấn đề này, bây giờ nếu ai biết làm thế nào để biến Jcrop đáp ứng tôi sẽ đánh giá cao sự giúp đỡ. Dưới đây là một cuộc thảo luận chi tiết hơn github pull

cổ vũ!

+0

cảm ơn. Tôi đã phải đối mặt với cùng một vấn đề và sau khi sử dụng tối đa chiều rộng: không có trên đó, các vấn đề đã biến mất :-) –

+0

Như một gợi ý, để biến Jcrop đáp ứng tôi sử dụng một popup popup nơi Jcrop được nạp. Bởi vì cửa sổ bật lên phương thức này có chiều rộng được kiểm soát, việc xử lý nội dung đáp ứng dễ dàng hơn. – daigorocub

+0

Hoạt động! Nhiều, rất nhiều, rất nhiều, cảm ơn! Đã có vấn đề rất giống nhau, với Bootstrap của Twitter, và không bao giờ nghĩ rằng đó là vấn đề. –

Các vấn đề liên quan