Mon code ne traite pas le jpeg

WRInaute impliqué
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
 
WRInaute accro
$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
 
WRInaute accro
Pour ma part, je laisserais tomber GD (je l'ai fait il y a un moment) et je gérerais tout ça avec Imagemagick.
 
WRInaute impliqué
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);

?
 
WRInaute accro
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 ...
 
WRInaute impliqué
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 ?
 
WRInaute impliqué
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 ?
 
Discussions similaires
Haut