2012-06-09 3 views
5

Ich verwende jcrop das Bild in meinem php application.I zuzuschneiden Code unten sind mit der Koordinatenwert und Ajax,Wie bekomme ich Bild mit jquery ajax?

function checkCoords(index) 
    { 
      if (parseInt(jQuery('#w').val())){ 
        jQuery.ajax({ 
         type : "POST", 
         cache: false, 
         dataType: 'html', 
         data : { 
           x : jQuery('#x').val(), 
           y : jQuery('#y').val(), 
           w : jQuery('#w').val(), 
           h : jQuery('#h').val(), 
         image_path : jQuery('#jc-hidden-image'+index).attr('src') 
         }, 
         url  : BASE_URL+'apps/configure/cropimage', 
         success : function(response) { 
           jQuery(".preview_crop").html(response); 
         } 
        });      
      } 
      else{ 
       alert('Please select a crop region then press Crop button.'); 
      } 

In-Controller unter Verwendung von Bildpfad passieren, verwende ich den Ajax-Wert wie unten,

public function cropimageAction(){ 
     $params = $this->getRequest()->getParams(); 
     //d($params); 
     if ($_SERVER['REQUEST_METHOD'] == 'POST') 
     { 
       $targ_w = $targ_h = 150; 
       $jpeg_quality = 90; 

       $src = $params['image_path']; 
       $img_r = imagecreatefromjpeg($src); 
       $dst_r = ImageCreateTrueColor($targ_w, $targ_h); 

       $image = imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'],$targ_w,$targ_h,$_POST['w'],$_POST['h']); 

       header('Content-type: image/jpeg'); 
       imagejpeg($dst_r,null,$jpeg_quality); 

       exit; 
     }   
    } 

bekam ich die Antwort als so etwas wie

( ( (

Anstelle des beschnittenen Bildes, habe ein Symbol bekommen. Sie müssen ein zugeschnittenes Bild in der Ajax-Antwort erhalten. Was habe ich falsch gemacht?

Antwort

8

Sie senden die vollständigen Bilddaten zurück, als Antwort, stattdessen das Bild auf dem Server zu speichern und die URL, um es als Antwort

statt

header('Content-type: image/jpeg'); 
imagejpeg($dst_r,null,$jpeg_quality); 

haben diese

imagejpeg($dst_r,"path/where/to/save/image.jpg",$jpeg_quality); 
echo "path/where/to/save/image.jpg"; 
senden

Auch Ihre Erfolgsfunktion sollte wie folgt aussehen:

success : function(url) { 
    jQuery(".preview_crop").html('<img src="' + url + '" />'); 
} 
+0

Danke Es funktioniert jetzt – mymotherland