2010-02-16 8 views
2

C'est la première fois que j'utilise la fonction ImageCopyResampled. Je viens de suivre le code écrit dans le PHP manual. Il semblait y avoir aucune erreur quand j'ai couru le code. Le problème est que mon code copie simplement l'image originale et n'a pas suivi les dimensions telles qu'elles ont été définies dans les paramètres passés dans la fonction. Ci-dessous est mon code:PHP - Problème avec ImageCopyResampled

public static function uploadFile($filename, $x_dimension, $y_dimension, $width, $height){ 
     $file = DOCROOT . "uploads/temp/".$filename; 
     $trgt_file = DOCROOT . "uploads/images/thumbs/".$filename; 

     if(is_file($file) AND file_exists($file)): 
       $trgt_w = 198; 
       $trgt_h = 130; 
       if(copy($file, $trgt_file)): 
         $src_img = imageCreateFromJpeg($file); 
         $trgt_img = imageCreateTrueColor($trgt_w, $trgt_h); 
         imageCopyResampled($trgt_img, $src_img, 0, 0, $x_dimension, $y_dimension, $trgt_w, $trgt_h, $width ,$height); 
         unlink($file); 
       endif; 
     endif; 
} 

Cette fonction copie simplement le fichier source et aucun recadrage ne s'est produit. Qu'est-ce que j'ai raté?

BTW, Im utilisant kohana 3. Merci.

+0

Suggestion, plutôt que d'une réponse, mais vous devriez regarder dans ImageMagick - http://us2.php.net/imagick - il vous donne quelques outils d'édition EXCELLENT. – Sonny

Répondre

1

Vous ne sauvegardez pas $trgt_img dans un fichier, donc l'image recadrée est perdue à la fin du script.

Vous devez écrire les données en utilisant imageJPEG() (ou le format dans lequel vous voulez écrire).

imageCopyResampled($trgt_img, $src_img, 0, 0, 
        $x_dimension, $y_dimension, $trgt_w, $trgt_h, 
        $width ,$height); 

imagejpeg($trgt_img, $filename, 90); // 90 is for quality - 75 is the default 
0

La réponse de Pekka est correcte, mais le nom de fichier qui est enregistré comme est incorrect, devrait être trgt_file $ au lieu de $ filename;