Redimensionner l'image en PHP

Muhammad Abubakar 8 juillet 2021
  1. Charger l’image avant de redimensionner
  2. imagecopyresized() en PHP
  3. imagecopyresampled() en PHP
  4. imagescale() en PHP
Redimensionner l'image en PHP

Dans cet article de tutoriel, nous aborderons le redimensionnement d’une image en PHP.

Charger l’image avant de redimensionner

Avant de redimensionner une image, nous devons d’abord la charger en tant que ressource d’image dans le script. Ce n’est pas la même chose que d’utiliser des fonctions telles que file_get_contents() pour obtenir le contenu du fichier image. Pour charger le fichier, nous devons utiliser des fonctions telles que imagecreatefromjpeg(), imagecreatefrompng() et imagecreatefromgif(), entre autres. Selon le type d’image que nous redimensionnerons, nous utiliserons une fonction différente en conséquence.

getimagesize() en PHP

Après avoir chargé l’image, nous utilisons getimagesize() pour calculer la largeur, la hauteur et le type de l’image d’entrée. Cette fonction renvoie une liste d’éléments, où la largeur et la hauteur de l’image sont stockées aux index 0 et 1, respectivement, et les constantes IMAGETYPE_XXX sont stockées à l’index 2. Nous utiliserons la valeur de cette constante renvoyée pour déterminer ce que type d’image à utiliser et quelle fonctionnalité utiliser.

<?php
function load_image($filename, $type) {
    $new = 'new34.jpeg';
    if( $type == IMAGETYPE_JPEG ) {
        $image = imagecreatefromjpeg($filename);
        echo "here is jpeg output:";
        imagejpeg($image, $new);

    }
    elseif( $type == IMAGETYPE_PNG ) {
        $image = imagecreatefrompng($filename);
        echo "here is png output:";
        imagepng($image,$new);
    }
    elseif( $type == IMAGETYPE_GIF ) {
        $image = imagecreatefromgif($filename);
        echo "here is gif output:";
        imagejpeg($image, $new);
    }
    return $new;
}

$filename = "panda.jpeg";
list($width, $height,$type) = getimagesize($filename);
echo "Width:" , $width,"\n";
echo "Height:", $height,"\n";
echo "Type:", $type, "\n";

$old_image = load_image($filename, $type);
?>

Image_entrée :

image de redimensionnement php - image d&rsquo;origine

Production:

Width:225
Height:225
Type:2
here is jpeg output:

Image_sortie :

php redimensionner l&rsquo;image

Les deux sont les mêmes images car nous ne chargeons que l’image et calculons la taille de l’image d’origine dans cette section.

imagecopyresized() en PHP

imagecopyresized() prend une zone oblongue de largeur src_w et de hauteur src_h de src_image à la position (src_x,src_y) et la place dans une zone rectangulaire de l’image de destination à la position (dst_x,dst_y). C’est une fonction intégrée à PHP.

<?php
// File and new size
$filename = 'panda.jpeg';
$percent = 0.5;

// Content type
header('Content-Type: image/jpeg');

// Get new sizes
list($width, $height, $type) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;
$type = $list[2];
echo $type;
// Load
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);

// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

// Output
imagejpeg($thumb,'new.jpeg');
?>

Image_entrée :

image de redimensionnement php - image d&rsquo;origine

Image_sortie :

php redimensionner l&rsquo;image

Comme discuté ci-dessus, la fonction imagecopyresize() accepte dix paramètres, qui sont listés ci-dessous.

Paramètres Explication
$dst_image La ressource image de destination
$src_image La ressource image source
$dst_x La coordonnée x du point de destination
$dst_y La coordonnée y du point de destination
$src_x La coordonnée x du point source
$src_y La coordonnée y du point source
$dst_w La largeur de destination
$dst_h La hauteur de destination
$src_w La largeur de la source
$src_h La hauteur de la source

Il renvoie la valeur booléenne TRUE en cas de succès ou FALSE en cas d’échec.

imagecopyresampled() en PHP

imagecopyresampled() copie une partie oblongue d’une image dans des valeurs de pixels différentes, interpolant de manière transparente pour réduire la dimension d’une image, en maintenant un haut niveau de clarté.

Elle fonctionne de manière similaire à la fonctionnalité imagecopyresized(), avec l’avantage supplémentaire d’échantillonner l’image en plus de la redimensionner.

<?php
// The file
$filename = 'panda.jpeg';
$percent = 2;

// Content type
header('Content-Type: image/jpeg');

// Get new dimensions
list($width, $height) = getimagesize($filename);
$new_width = $width * $percent;
$new_height = $height * $percent;

// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

// Output
imagejpeg($image_p, 'resampled1.jpeg', 100);
?>

Image_entrée :

image de redimensionnement php - image d&rsquo;origine

Image_sortie :

php redimensionner l&rsquo;image

La fonction imagecopyresampled() accepte dix paramètres différents.

Paramètres Explication
$image_p Il détermine l’image de destination.
$image Il détermine l’image source.
$x_dest Il détermine la coordonnée x de l’image de destination.
$y_dest Il détermine la coordonnée y de l’image de destination.
$x_src Il détermine la coordonnée x de l’image source.
$y_src Il détermine la coordonnée y de l’image source.
$wid_dest Il détermine la largeur de la nouvelle image.
$hei_dest Il détermine la hauteur de la nouvelle image.
$wid_src Il détermine la largeur de l’ancienne image.
$wid_src Il détermine la hauteur de l’ancienne image.

Remarque : on peut aussi faire un rééchantillonnage proportionnel, ce qui est possible en donnant la largeur et la hauteur de la dest_image au lieu de pourcentage.

imagescale() en PHP

Vous spécifiez la taille plutôt que de définir la largeur ou la hauteur de la dernière image. Si vous souhaitez que la nouvelle taille de l’image soit la moitié de la première image, définissez la taille sur 0,8. Voici l’exemple de code pour redimensionner une image par un facteur donné tout en préservant le rapport.

Nous multiplions la largeur et la hauteur d’origine de l’image par l’échelle spécifiée dans la fonction scale image().

voici son exemple :

<?php
    
function load_image($filename, $type) {

        if( $type == IMAGETYPE_JPEG ) {
            $image = imagecreatefromjpeg($filename);

        }
        elseif( $type == IMAGETYPE_PNG ) {
            $image = imagecreatefrompng($filename);
           
        }
        elseif( $type == IMAGETYPE_GIF ) {
            $image = imagecreatefromgif($filename);
            
        }
        
        return $image;
    }
function scale_image($scale, $image, $width, $height) {
    $new_width = $width * $scale;
    $new_height = $height * $scale;
    return resize_image($new_width, $new_height, $image, $width, $height);
    
}
function resize_image($new_width, $new_height, $image, $width, $height) {
    $image12 = 'hello.jpeg';
    $new_imag = imagecreatetruecolor($new_width, $new_height);
    imagecopyresampled($new_imag, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    
    return imagejpeg($new_imag, $image12);
    }


$filename = "panda.jpeg";
list($width, $height, $type) = getimagesize($filename);
$old_image = load_image($filename, $type);
$image_scaled = scale_image(0.8, $old_image, $width, $height);
?>

Image_entrée :

image de redimensionnement php - image d&rsquo;origine

Image_sortie :

php redimensionner l&rsquo;image

En dehors de cela, PHP a une fonctionnalité intégrée qui vous permet de redimensionner une image à la largeur et à la hauteur spécifiées.

Voir l’exemple de code.

<?php
    
$out_image = "sca.jpeg";
$image_name ="panda.jpeg";
     
// Load image file
$image = imagecreatefromjpeg($image_name);
  
// Use imagescale() function to scale the image
$img = imagescale( $image, 500, 400 );
  

header("Content-type: image/jpeg");
imagejpeg($img,$out_image);
  
?>

Image_entrée :

image de redimensionnement php - image d&rsquo;origine

Image_sortie :

php redimensionner l&rsquo;image