2013-05-08 33 views
6

Kullanıcı tarafından yüklenen resimleri düzenlemek için Jcrop kullanıyorum, kullanıcı resim düzenlemeye karar verdiğinde, kullanıcının orijinal imajını almak için AJAX araması yapılıyor, kodum aşağıdaki gibi:Yüklendikten sonra Jcrop squashes image, yanlış genişlik uygular

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

kutu, yüklenen kalıcı görüntülenir ve görüntü mükemmel yüklenen, ancak yükleme bittiğinde ve Jcrop yaklaşık 20 piksel genişliğinde bir görüntüsünü bırakarak tamamen genişliği küçülür oynamak konusunda bir kez.

Birisi bana bununla ilgili yardım edebilir, bunun gerçekleştiği zamanların yaklaşık% 80'i. Şerefe!

cevap

-2

meraklı, sen denedin mi:

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

Bu, sorunun cevabını vermez. Bir yazarın eleştirisini veya açıklamasını istemek için, gönderilerinizin altında bir yorum bırakın - her zaman kendi gönderileriniz hakkında yorum yapabilir ve yeterli sayıda [itibar] (http://stackoverflow.com/faq#reputation) edinebilirsiniz. [herhangi bir gönderiye yorum yapmak için] (http://stackoverflow.com/privileges/comment). – Undo

+0

Evet, daha yeni denedim ve aynı sonucu aldım [Screenshot] (http://www.guevaraguerra.com/Screen%20Shot%202013-05-08%20at%207.09.25%20PM.png) o ortaya çıkıyor. – CupOfJoe

+0

bir moderatör olarak, benim fiziksel olarak bir yorum ekleyemem gerektiğini bilmelisiniz çünkü bu seçenek benim itibarım 50'den beri bana görünmüyor. – carrabino

9

Bunun için çözüm bulundu, sorun Resim kırpmayı görüntülemek için, ben Twitter'ın Bootstrap modal kullanıyorum duyarlı şebekelerini kullanarak, ve için css vücut maksimum genişliğe ayarlanır:% 100; Bu ayar, görüntünün genişliğini ve yüksekliğini elde ederken Jcrop'u karıştırır. Bu herkes çevirmek bilen şimdi ise, konuyu çözecek

.jcrop img { 
    max-width: none; 
} 

: Bu nedenle ihtiyaç duyulan tek şey bu tercih sınıf .jcrop veya herhangi bir şeyle bir DIV görüntüyü kaydırmak ve css ayarlamak için çözmek Jcrop responsive Yardımı çok takdir ediyorum. Burada daha ayrıntılı bir tartışma var. github pull

Şerefe!

+0

teşekkürler. Aynı konuyla karşılaşıyordum ve max-width kullandıktan sonra: hiçbiri üzerinde sorun yok :-) –

+0

Bir öneri olarak, Jcrop yanıtını döndürmek için Jcrop'un yüklü olduğu bir modal penceresi kullanıyorum. Bu modal pencerenin kontrollü bir genişliğe sahip olması nedeniyle, yanıt veren şeyleri işlemek daha kolaydı. – daigorocub

+0

Çalışmaları! Çok, çok, çok, çok teşekkürler! Twitter'ın Bootstrap ile aynı sorunu vardı ve bu sorun olduğunu hiç düşünmemiştim. –