2013-05-08 3 views
6

Ich benutze Jcrop zum Bearbeiten von Bildern hochgeladen von Benutzern, wenn ein Benutzer beschließt, ihr Bild zu bearbeiten, ein AJAX-Aufruf wird gemacht, um das Originalbild des Benutzers zu erhalten, ist mein Code wie folgt:Jcrop quetscht Bild nach geladen, gilt falsche Breite

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

die Box geladen wird, wird die modal angezeigt und das Bild wird perfekt geladen, aber sobald es fertig Laden und Jcrop kommt es zu spielen, die Breite vollständig schrumpft, um ein Bild von etwa 20px breit zu verlassen.

Kann mir bitte jemand helfen, fast 80% der Fälle. Prost!

Antwort

-2

neugierig, haben Sie versucht:

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

Dies bietet keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag - du kannst deine eigenen Beiträge kommentieren, und sobald du genügend [Reputation] (http://stackoverflow.com/faq#reputation) hast, wirst du in der Lage sein [Kommentar zu einem Beitrag] (http://stackoverflow.com/privileges/comment). – Undo

+0

Ja, ich habe es gerade ausprobiert und ich bekomme das gleiche Ergebnis, [Screenshot] (http://www.guevaraguerra.com/Screen%20Shot%202013-05-08%20at%207.09.25%20PM.png) das ist wie es zeigt sich. – CupOfJoe

+0

als Moderator, sollten Sie wissen, dass ich physisch unten keinen Kommentar hinzufügen kann, weil diese Option mir nicht erscheint, da mein Ruf nicht 50 ist. – carrabino

9

ich die Lösung gefunden, ist das Problem mit der feinfühligen Gitter mit, ich bin Twitters Bootstrap modal mit dem Bildbeschneidungs ​​anzuzeigen, und die CSS für die Körper ist auf maximale Breite eingestellt: 100%; Diese Einstellung verwechselt JCrop, wenn die Breite und Höhe des Bildes ermittelt werden. Daher zu lösen benötigt dies das einzige ist, das Bild in einem DIV mit Klasse .jcrop oder alles, was Sie bevorzugen und setzen die CSS wickeln:

.jcrop img { 
    max-width: none; 
} 

dies löst das Problem, jetzt, wenn jemand weiß, wie man drehen Jcop reagiert ich würde die Hilfe sehr schätzen. Hier ist eine detailliertere Diskussion github pull

Prost!

+0

danke. Ich hatte das gleiche Problem und nach der Verwendung von max-width: keine darauf, die Probleme war weg :-) –

+0

Als Vorschlag, Jcrop reaktionsfähig zu drehen, ich ein modales Popup verwendet, wo Jcrop geladen ist. Da dieses modale Popup eine kontrollierte Breite hat, war es einfacher, mit dem reaktiven Material umzugehen. – daigorocub

+0

Funktioniert! Vielen, vielen, vielen, vielen Dank! Hatte das gleiche Problem, mit Twitter Bootstrap, und dachte nie, dass das das Problem war. –

Verwandte Themen