Maison >développement back-end >tutoriel php >Traitement d'images avec PHP
PHP est un langage de script côté serveur largement utilisé, et ses puissantes capacités de traitement d'images fournissent des outils très pratiques pour les développeurs de sites Web. En utilisant l'extension GD (Image Processing Library) via PHP, vous pouvez opérer sur les images, notamment la mise à l'échelle, la découpe, la rotation, l'ajout de filigranes, la génération de vignettes, etc. Dans cet article, nous allons apprendre à utiliser PHP pour le traitement d'images.
Avant de commencer à utiliser PHP pour le traitement d'images, nous devons nous assurer que l'extension GD est installée. Nous pouvons vérifier si l'extension GD a été installée en utilisant la commande suivante :
php -m|grep gd
Si aucun résultat n'est trouvé, cela signifie que l'extension GD n'a pas été installée. Sous les systèmes Linux, nous pouvons utiliser la commande suivante pour installer :
sudo apt-get install php-gd //使用apt安装 sudo yum install php-gd //使用yum安装
Sous les systèmes Windows, nous pouvons ajouter "extension=php_gd2.dll" à la configuration des extensions dans le fichier php.ini pour l'installation.
2.1 Ouvrir des fichiers image
En PHP, nous pouvons utiliser la fonction imagecreatefromjpeg(), la fonction imagecreatefrompng() et la fonction imagecreatefromgif() pour ouvrir le fichier image correspondant.
Par exemple, nous pouvons utiliser le code suivant pour ouvrir une image au format JPEG nommée "test.jpg" :
$img = imagecreatefromjpeg("test.jpg");
2.2 Redimensionner l'image
Nous pouvons utiliser la fonction imagecopyresampled() pour redimensionner l'image. l'utilisation est la suivante :
bool imagecopyresampled(resource dst_image, resource src_image, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)
Parmi eux, dst_image représente l'image cible, src_image représente l'image source, dst_x et dst_y représentent les coordonnées de départ de la zone copiée dans l'image cible, src_x et src_y représentent les coordonnées de départ de la zone copiée dans l'image source, dst_w et dst_h représentent la largeur et la hauteur de la zone copiée dans l'image cible, src_w et src_h représentent la largeur et la hauteur de la zone copiée dans l'image source.
Par exemple, on peut redimensionner une image à la taille de 200x200 :
$img = imagecreatefromjpeg("test.jpg"); $dst_img = imagecreatetruecolor(200, 200); imagecopyresampled($dst_img, $img, 0, 0, 0, 0, 200, 200, imagesx($img), imagesy($img));
Parmi elles, la fonction imagecreatetruecolor() est utilisée pour créer une nouvelle image en vraies couleurs. La fonction imagesx() et la fonction imagesy() sont utilisées pour obtenir respectivement la largeur et la hauteur de l'image source.
2.3 Faire pivoter l'image
Nous pouvons utiliser la fonction imagerotate() pour faire pivoter l'image. L'utilisation spécifique de cette fonction est la suivante :
bool imagerotate(resource image, float angle, int bgd_color[, int ignore_transparent])
Parmi eux, l'image représente l'image pivotée, l'angle représente l'angle de rotation et bgd_color représente la couleur d'arrière-plan de l'image. ignore_transparent indique s'il faut ignorer les couleurs transparentes.
Par exemple, nous pouvons faire pivoter une image de 45 degrés :
$img = imagecreatefromjpeg("test.jpg"); $dst_img = imagerotate($img, 45, 0);
2.4 Ajouter un filigrane
Nous pouvons utiliser la fonction imagecopy() pour ajouter un filigrane. L'utilisation spécifique de cette fonction est la suivante :
bool imagecopy(resource dst_image, resource src_image, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h)
where, dst_image. représente l'image cible, src_image représente l'image source, dst_x et dst_y représentent les coordonnées de départ de la zone copiée dans l'image cible, src_x et src_y représentent les coordonnées de départ de la zone copiée dans l'image source, src_w et src_h représentent la largeur et hauteur de la zone copiée dans l’image source.
Par exemple, on peut ajouter un filigrane sur une image :
$img = imagecreatefromjpeg("test.jpg"); $watermark = imagecreatefrompng("watermark.png"); imagecopy($img, $watermark, imagesx($img)-imagesx($watermark)-10, imagesy($img)-imagesy($watermark)-10, 0, 0, imagesx($watermark), imagesy($watermark));
où, watermark.png est une image en filigrane au format PNG avec un fond transparent, qui sera ajouté dans le coin inférieur droit de l'image test.jpg, et avec la distance à la frontière est de 10 pixels.
2.5 Générer des vignettes
Nous pouvons utiliser la fonction imagecopyresampled() pour générer des vignettes. L'utilisation spécifique de cette fonction est la suivante :
bool imagecopyresampled(resource dst_image, resource src_image, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)
Parmi elles, dst_image représente l'image cible, src_image représente l'image source, dst_x et dst_y. représentent l'image cible. Les coordonnées de départ de la zone copiée, src_x et src_y représentent les coordonnées de départ de la zone copiée dans l'image source, dst_w et dst_h représentent la largeur et la hauteur de la zone copiée dans l'image cible, src_w et src_h représentent la largeur et la hauteur de la zone copiée dans l'image source sont élevées.
Par exemple, nous pouvons générer une vignette d'une largeur de 100 pixels :
$img = imagecreatefromjpeg("test.jpg"); $dst_img = imagecreatetruecolor(100, imagesy($img)*(100/imagesx($img))); imagecopyresampled($dst_img, $img, 0, 0, 0, 0, 100, imagesy($img)*(100/imagesx($img)), imagesx($img), imagesy($img));
Enfin, nous devons utiliser la fonction imagejpeg(), la fonction imagepng() et la fonction imagegif() pour enregistrez notre traitement des images transmises.
Par exemple, nous pouvons utiliser le code suivant pour enregistrer l'image que nous venons de traiter dans un fichier :
imagejpeg($dst_img, "test_thumb.jpg");
Résumé
En utilisant les fonctions de traitement d'image de PHP, nous pouvons facilement implémenter diverses opérations sur les images, notamment le redimensionnement, la rotation, l'ajout des filigranes, générer des vignettes, et bien plus encore. C'est une fonctionnalité très utile pour les développeurs. J'espère que grâce à l'introduction de cet article, les lecteurs pourront maîtriser l'utilisation de base du traitement d'image PHP et offrir plus de commodité pour leur travail de développement de sites Web.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!