Maison  >  Article  >  développement back-end  >  Parlons de la façon de définir le noir sur transparent en php

Parlons de la façon de définir le noir sur transparent en php

PHPz
PHPzoriginal
2023-04-12 15:06:301337parcourir

Dans la programmation PHP, des fonctions de traitement d'image sont souvent utilisées, telles que la mise à l'échelle et le recadrage des images. Un problème souvent rencontré est de savoir comment rendre le fond noir de l'image transparent pour obtenir une image transparente PNG 24 bits.

Aujourd'hui, nous allons discuter de la façon de définir le noir sur transparent à l'aide de PHP.

Tout d'abord, nous devons utiliser la bibliothèque GD de PHP pour traiter les images. La bibliothèque GD est une bibliothèque de traitement graphique populaire qui peut être utilisée pour traiter divers fichiers graphiques.

En PHP, vous pouvez ouvrir la bibliothèque GD via le code suivant :

<?php
// 开启GD库
if(!function_exists(&#39;imagecreate&#39;)){
   echo &#39;GD库未安装!&#39;;
}
?>

Ensuite, nous devons comprendre comment utiliser la bibliothèque GD pour exploiter les images.

Le processus de base d'exploitation des images par la bibliothèque PHP-GD est le suivant :

  1. Créer une image ;
  2. Lire une image ;
  3. Copier une image ;
  4. Mise à l'échelle, recadrage et rotation de l'image ; et affichage.
  5. Ici, nous nous concentrons principalement sur la quatrième étape, comment zoomer, recadrer et faire pivoter des images.

Pour les opérations de mise à l'échelle et de rotation, vous pouvez utiliser directement les fonctions appropriées, et pour les opérations de recadrage, nous devons utiliser la fonction imagecopy(). La fonction imagecopy() peut copier une partie de l'image originale vers l'image cible pour obtenir un effet de recadrage.

Lorsque nous utilisons ces fonctions pour manipuler des images, nous devons faire attention à certains détails. Par exemple, lors de la sauvegarde d'images, nous devons faire attention au format et au modèle de couleur de la sauvegarde. Normalement, nous devons enregistrer l'image au format PNG et utiliser le modèle True Color.

Maintenant, revenons à notre problème, comment rendre transparent le fond noir de l'image.

Nous pouvons y parvenir en suivant les étapes suivantes :

Utilisez la fonction imagecreatefrompng() pour créer une image au format PNG ;
  1. Parcourez tous les pixels de l'image
  2. Utilisez la fonction imagecolorat() pour obtenir la couleur ; de chaque pixel ;
  3. Déterminez si la couleur est noire ;
  4. Si la couleur est noire, définissez la transparence du pixel sur 0 
  5. Enfin, utilisez la fonction imagepng() pour enregistrer l'image au format PNG ;
  6. Voici le code PHP pour cette opération :
$src_image = imagecreatefrompng('source.png');
$width = imagesx($src_image);
$height = imagesy($src_image);
for($x = 0; $x < $width; $x++){
    for($y = 0; $y < $height; $y++){
        $rgb = imagecolorat($src_image, $x, $y);
        $colors = imagecolorsforindex($src_image, $rgb);
        if($colors['red'] == 0 && $colors['green'] == 0 && $colors['blue'] == 0){
            imagesetpixel($src_image, $x, $y, imagecolorallocatealpha($src_image, 0, 0, 0, 127));
        }
    }
}
imagesavealpha($src_image, true);
imagepng($src_image, 'result.png');
imagedestroy($src_image);

Dans ce code, nous créons d'abord l'image originale à l'aide de la fonction imagecreatefrompng(). Ensuite, utilisez les fonctions imagesx() et imagesy() pour obtenir la largeur et la hauteur de l'image originale. Ensuite, nous avons utilisé une double boucle pour parcourir tous les pixels, utilisé la fonction imagecolorat() pour obtenir la couleur de chaque pixel et utilisé la fonction imagecolorsforindex() pour obtenir la valeur RVB de la couleur. Si la couleur est noire, nous utilisons la fonction imagesetpixel() pour définir la transparence du pixel à 0 et enregistrer l'image au format PNG.

En utilisant le code ci-dessus, nous pouvons convertir une image au format PNG avec un fond noir en une image au format PNG avec un fond transparent.

En résumé, utiliser PHP pour définir le noir comme arrière-plan transparent est très utile lorsque nous utilisons des fonctions de traitement d'image. Maîtriser cette compétence peut nous rendre plus à l'aise lors du traitement des images.

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