Redimensionner l'image en PHP
- Charger l’image avant de redimensionner
-
imagecopyresized()
en PHP -
imagecopyresampled()
en PHP -
imagescale()
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 :
Production:
Width:225
Height:225
Type:2
here is jpeg output:
Image_sortie :
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_sortie :
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_sortie :
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_sortie :
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_sortie :