Maison > développement back-end > tutoriel php > Tutoriel de la bibliothèque PHP et GD : Comment convertir une image en noir et blanc

Tutoriel de la bibliothèque PHP et GD : Comment convertir une image en noir et blanc

王林
Libérer: 2023-07-12 10:34:01
original
802 Les gens l'ont consulté

Tutoriel PHP et GD Library : Comment convertir des images en noir et blanc

Introduction :
Dans le développement de sites Web, le traitement d'image est une exigence courante. Parfois, nous souhaitons convertir des images couleur en noir et blanc pour augmenter l’effet visuel du site Web ou pour réaliser certaines fonctions spécifiques. En PHP, nous pouvons utiliser la bibliothèque GD pour atteindre cet objectif. Ce tutoriel va vous montrer comment convertir une image couleur en noir et blanc à l'aide de PHP et de la bibliothèque GD.

Étape 1 : Installer la bibliothèque GD
Tout d'abord, nous devons nous assurer que la bibliothèque GD est installée sur notre serveur PHP. Vous pouvez utiliser la commande suivante pour vérifier si la bibliothèque GD a été installée :

php -m | grep -i gd
Copier après la connexion

Si vous voyez "gd" dans les résultats renvoyés, cela signifie que la bibliothèque GD a été installée. Sinon, vous pouvez utiliser la commande suivante pour installer la bibliothèque GD :

sudo apt-get install php-gd
Copier après la connexion

Étape 2 : Créer un fichier de script
Ensuite, nous devons créer un fichier de script PHP pour convertir les images couleur en noir et blanc. Créez un fichier nommé convert_to_bw.php dans le répertoire de votre projet. convert_to_bw.php的文件。

步骤3:导入图像
在脚本文件的开头,我们需要导入我们想要转换的彩色图像。首先,创建一个变量来存储图像路径,然后使用imagecreatefromjpeg()函数将图像导入到内存中。

$imagePath = 'path_to_your_image.jpg';
$sourceImage = imagecreatefromjpeg($imagePath);
Copier après la connexion

步骤4:转换为黑白
接下来,我们需要遍历图像的每一个像素,并将其转换为黑白。对于每个像素,我们可以使用imagecolorat()函数获取其RGB颜色值,并使用以下公式计算灰度值:

$pixelColor = imagecolorat($sourceImage, $x, $y);
$red = ($pixelColor >> 16) & 0xFF;
$green = ($pixelColor >> 8) & 0xFF;
$blue = $pixelColor & 0xFF;
$gray = round(($red + $green + $blue) / 3);
Copier après la connexion

这个公式将红色、绿色和蓝色通道的值相加,然后除以3,得到像素的平均灰度值。

步骤5:创建新图像
在将像素转换为黑白后,我们需要创建一个新的图像来存储转换结果。可以使用imagecreatetruecolor()函数创建一个指定大小的黑白图像:

$bwImage = imagecreatetruecolor($imageWidth, $imageHeight);
Copier après la connexion

其中,$imageWidth$imageHeight分别是原始图像的宽度和高度。

步骤6:设置黑白像素
我们需要遍历原始图像的每个像素,并在新的黑白图像中设置相应的灰度值。可以使用imagesetpixel()函数将像素设置为指定颜色:

imagesetpixel($bwImage, $x, $y, imagecolorallocate($bwImage, $gray, $gray, $gray));
Copier après la connexion

imagecolorallocate()函数用于创建一个指定RGB值的像素颜色。

步骤7:保存黑白图像
最后,我们需要使用imagejpeg()

Étape 3 : Importer l'image

Au début du fichier de script, nous devons importer l'image couleur que nous voulons convertir. Tout d’abord, créez une variable pour stocker le chemin de l’image, puis utilisez la fonction imagecreatefromjpeg() pour importer l’image en mémoire.

$bwImagePath = 'path_to_save_bw_image.jpg';
imagejpeg($bwImage, $bwImagePath);
Copier après la connexion

Étape 4 : Convertir en noir et blanc
Ensuite, nous devons parcourir chaque pixel de l'image et la convertir en noir et blanc. Pour chaque pixel, nous pouvons utiliser la fonction imagecolorat() pour obtenir sa valeur de couleur RVB et calculer la valeur en niveaux de gris à l'aide de la formule suivante :

$imagePath = 'path_to_your_image.jpg';
$sourceImage = imagecreatefromjpeg($imagePath);

$imageWidth = imagesx($sourceImage);
$imageHeight = imagesy($sourceImage);

$bwImage = imagecreatetruecolor($imageWidth, $imageHeight);

for ($x = 0; $x < $imageWidth; $x++) {
    for ($y = 0; $y < $imageHeight; $y++) {
        $pixelColor = imagecolorat($sourceImage, $x, $y);
        $red = ($pixelColor >> 16) & 0xFF;
        $green = ($pixelColor >> 8) & 0xFF;
        $blue = $pixelColor & 0xFF;
        $gray = round(($red + $green + $blue) / 3);

        imagesetpixel($bwImage, $x, $y, imagecolorallocate($bwImage, $gray, $gray, $gray));
    }
}

$bwImagePath = 'path_to_save_bw_image.jpg';
imagejpeg($bwImage, $bwImagePath);
Copier après la connexion
🎜Cette formule compare les valeurs du rouge, du vert et canaux bleus Ajoutez puis divisez par 3 pour obtenir la valeur de gris moyenne du pixel. 🎜🎜Étape 5 : Créer une nouvelle image🎜Après avoir converti les pixels en noir et blanc, nous devons créer une nouvelle image pour stocker les résultats de la conversion. Vous pouvez utiliser la fonction imagecreatetruecolor() pour créer une image en noir et blanc d'une taille spécifiée : 🎜rrreee🎜où, $imageWidth et $imageHeight sont respectivement la largeur et la hauteur de l'image d'origine. 🎜🎜Étape 6 : Définir les pixels en noir et blanc🎜Nous devons parcourir chaque pixel de l'image d'origine et définir la valeur d'échelle de gris correspondante dans la nouvelle image en noir et blanc. Vous pouvez utiliser la fonction imagesetpixel() pour définir un pixel sur une couleur spécifiée : 🎜rrreee🎜 La fonction imagecolorallocate() est utilisée pour créer une couleur de pixel avec un RVB spécifié valeur. 🎜🎜Étape 7 : Enregistrez l'image en noir et blanc🎜Enfin, nous devons enregistrer l'image en noir et blanc en tant que nouveau fichier en utilisant la fonction imagejpeg() : 🎜rrreee🎜Exemple de code complet : 🎜rrreee 🎜Conclusion : 🎜Grâce à ce tutoriel, nous avons appris à convertir une image couleur en noir et blanc à l'aide de PHP et de la bibliothèque GD. Vous pouvez utiliser cette méthode dans le développement de sites Web pour obtenir une variété d’effets visuels intéressants. J'espère que ce tutoriel vous sera utile ! 🎜

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal