Mon code ne traite pas le jpeg

Bonjour,
Pour couper les images j'utilise cette fonction, que j'ai trouvé sur un site :

Code:
//couper images 
function cropImage($source_image, $target_image, $crop_area)
{
    // detect source image type from extension
    $source_file_name = basename($source_image);
    $source_image_type = substr($source_file_name, -3, 3);
    
    // create an image resource from the source image  
    switch(strtolower($source_image_type))
    {
        case 'jpg':
            $original_image = imagecreatefromjpeg($source_image);
            break;
			    
        case 'gif':
            $original_image = imagecreatefromgif($source_image);
            break;

        case 'png':
            $original_image = imagecreatefrompng($source_image);
            break;    
        
        default:
            trigger_error('cropImage(): Invalid source image type', E_USER_ERROR);
            return false;
    }
    
    // create a blank image having the same width and height as the crop area
    // this will be our cropped image
    $cropped_image = imagecreatetruecolor($crop_area['width'], $crop_area['height']);
    
    // copy the crop area from the source image to the blank image created above
    imagecopy($cropped_image, $original_image, 0, 0, $crop_area['left'], $crop_area['top'], 
              $crop_area['width'], $crop_area['height']);
 	
    // detect target image type from extension
    $target_file_name = basename($target_image);
    $target_image_type = substr($target_file_name, -3, 3);
    
    // save the cropped image to disk
    switch(strtolower($target_image_type))
    {
        case 'jpg':
            imagejpeg($cropped_image, $target_image, 100);
            break;
				
        case 'gif':
            imagegif($cropped_image, $target_image);
            break;

        case 'png':
            imagepng($cropped_image, $target_image, 0);
            break;    
        
        default:
            trigger_error('cropImage(): Invalid target image type', E_USER_ERROR);
            imagedestroy($cropped_image);
            imagedestroy($original_image);
            return false;
    }
    
    // free resources
    imagedestroy($cropped_image);
    imagedestroy($original_image);
    
    return true;
}


// fin coupure d'image
// using the function to crop an image
//$source_image = 'aa.jpg';
//$target_image = 'result/aa.jpg';
//$crop_area = array('top' => 100, 'left' => 100, 'height' => 300, 'width' => 300);
//cropImage($source_image, $target_image, $crop_area);
?>


ca marche pour le PNG, JPG mais pas sur JPEG ? j'ai ajouté ça :

Code:
         case 'jpeg':
            imagejpeg($cropped_image, $target_image, 100);
            break;

Mais ça m'affiche toujours l'erreur : cropImage(): Invalid source image type

Avez vous une idée d'où provient le problème ?

Merci
 
$source_image_type = substr($source_file_name, -3, 3);

switch(strtolower($source_image_type))

case 'jpeg': -> 4 caractères tu rentre jamais dans ce cas
 
Pour ma part, je laisserais tomber GD (je l'ai fait il y a un moment) et je gérerais tout ça avec Imagemagick.
 
Merci à vous tous

zeb a dit:
$source_image_type = substr($source_file_name, -3, 3);

switch(strtolower($source_image_type))

case 'jpeg': -> 4 caractères tu rentre jamais dans ce cas

ça ne marche pas si je met ça :

Code:
 $source_image_type = substr($source_file_name, -4, 4);

?
 
Bah oui normal si tu prend les 4 dernière lettres c'est le cas des 3 qui marche plu. Le code c'est pas du copier coller ni du tâtonnement c'est de la logique. Spout t'a donné la solution en mode propre ...
 
Je viens d'appercevoir qu'avec
Code:
 $target_image_type = substr($target_file_name, -4, 4);
Les images en jpg ne passent plus ?

Une idée SVP ?
 
Ah je viens de comprendre lol y a pas un truc de bricolage le temps que je trouve du temps pour faire un code propre ?
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut