Maison  >  Article  >  développement back-end  >  Comment utiliser la bibliothèque GD pour traiter des images en PHP ?

Comment utiliser la bibliothèque GD pour traiter des images en PHP ?

PHPz
PHPzoriginal
2023-09-13 13:28:471376parcourir

Comment utiliser la bibliothèque GD pour traiter des images en PHP ?

Comment utiliser la bibliothèque GD pour traiter des images en PHP ?

La bibliothèque GD est une puissante bibliothèque de traitement d'image. L'utilisation de la bibliothèque GD en PHP peut implémenter certaines fonctions de traitement d'image simples, telles que le recadrage, la mise à l'échelle, l'ajout de filigranes, etc. Cet article expliquera comment utiliser la bibliothèque GD pour traiter des images en PHP et donnera quelques exemples de code spécifiques.

Tout d'abord, assurez-vous que l'extension de la bibliothèque GD est activée sur le serveur. Vous pouvez rechercher et décommenter "extension=gd" dans le fichier php.ini, puis redémarrer le serveur.

Ensuite, examinons quelques opérations courantes de traitement d’image.

  1. Création de vignettes

Pour créer des vignettes, nous utilisons la fonction imagecopyresampled de la bibliothèque GD pour réduire l'image originale à la taille spécifiée. Voici un exemple de code :

function createThumbnail($src, $dst, $width, $height) {
    $src_img = imagecreatefromjpeg($src); // 从原图像创建一个图像资源
    $dst_img = imagecreatetruecolor($width, $height); // 创建一个指定大小的新图像资源
    $src_width = imagesx($src_img); // 原图像的宽度
    $src_height = imagesy($src_img); // 原图像的高度
    $ratio = max($width / $src_width, $height / $src_height); // 计算缩放比例
    $new_width = ceil($src_width * $ratio); // 计算缩略图的宽度
    $new_height = ceil($src_height * $ratio); // 计算缩略图的高度
    $x_offset = ($new_width - $width) / 2; // 计算水平偏移量
    $y_offset = ($new_height - $height) / 2; // 计算垂直偏移量
    imagecopyresampled($dst_img, $src_img, -$x_offset, -$y_offset, 0, 0, $new_width, $new_height, $src_width, $src_height); // 缩放图像
    imagejpeg($dst_img, $dst); // 将缩略图保存到指定路径
    imagedestroy($src_img); // 销毁图像资源
    imagedestroy($dst_img);
}

// 示例使用
$source_image = 'original.jpg'; // 原图像路径
$thumbnail_image = 'thumbnail.jpg'; // 生成的缩略图路径
$thumbnail_width = 200; // 缩略图宽度
$thumbnail_height = 150; // 缩略图高度
createThumbnail($source_image, $thumbnail_image, $thumbnail_width, $thumbnail_height);
  1. Ajouter un filigrane

Pour ajouter un filigrane, nous utilisons la fonction imagecopy de la bibliothèque GD pour superposer l'image du filigrane sur l'image originale à la position spécifiée. Voici un exemple de code :

function addWatermark($src, $dst, $watermark) {
    $src_img = imagecreatefromjpeg($src); // 从原图像创建一个图像资源
    $watermark_img = imagecreatefrompng($watermark); // 从水印图像创建一个图像资源
    $src_width = imagesx($src_img); // 原图像的宽度
    $src_height = imagesy($src_img); // 原图像的高度
    $watermark_width = imagesx($watermark_img); // 水印图像的宽度
    $watermark_height = imagesy($watermark_img); // 水印图像的高度
    $x_offset = $src_width - $watermark_width - 10; // 水印图像的水平偏移量
    $y_offset = $src_height - $watermark_height - 10; // 水印图像的垂直偏移量
    imagecopy($src_img, $watermark_img, $x_offset, $y_offset, 0, 0, $watermark_width, $watermark_height); // 将水印图像覆盖在原图像上
    imagejpeg($src_img, $dst); // 将带有水印的图像保存到指定路径
    imagedestroy($src_img); // 销毁图像资源
    imagedestroy($watermark_img);
}

// 示例使用
$source_image = 'original.jpg'; // 原图像路径
$watermark_image = 'watermark.png'; // 水印图像路径
$watermarked_image = 'watermarked.jpg'; // 带有水印的图像路径
addWatermark($source_image, $watermarked_image, $watermark_image);

Grâce à l'exemple de code ci-dessus, nous pouvons utiliser la bibliothèque GD pour traiter des images en PHP afin de générer des vignettes et ajouter des filigranes. Bien entendu, la bibliothèque GD prend également en charge davantage d'opérations de traitement d'image, telles que la rotation de l'image, l'ajout de bordures d'image, etc., et peut être étendue en fonction des besoins réels.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn