Position actuelle: Accueil> Derniers articles> Comment rédiger un script de traitement d'image PHP qui prend en charge la génération de palettes dynamiques?

Comment rédiger un script de traitement d'image PHP qui prend en charge la génération de palettes dynamiques?

M66 2025-07-04

Dans le développement Web, le traitement d'image est une exigence très courante, comme la génération de vignettes, le filigrane, le réglage automatique des couleurs, etc. Dans certains scénarios, tels que des avatars personnalisés et la production d'effet artistiques, nous devons générer dynamiquement une palette de couleurs basée sur différentes entrées et l'appliquer à l'image.
Cet article vous apprendra à rédiger un script de traitement d'image pris en charge à l'aide de PHP.

Préparation de base

Pour traiter les images, la bibliothèque la plus couramment utilisée en PHP est la bibliothèque GD (extension GD ). Avant de commencer, assurez-vous que votre environnement PHP a installé et activé les extensions GD:

 php -m | grep gd

Si vous n'êtes pas installé, vous pouvez l'installer de la même manière (en prenant Ubuntu comme exemple):

 sudo apt-get install php-gd
sudo service apache2 restart

Idées de conception de script

  1. Paramètres de réception (tels que la couleur, la taille de l'image, le mode de réglage des couleurs)

  2. Générer une palette de couleurs dynamique basée sur les paramètres

  3. Créer une toile

  4. Dessinez des images de la palette

  5. Sortie ou enregistrer une image

Exemple de code

Voici un exemple complet qui prend en charge les palettes dynamiques et les effets de rendu simple:

 <?php
// Définissez l&#39;en-tête de réponse
header('Content-Type: image/png');

// Définissez la fonction de génération de palettes de couleurs
function generatePalette($baseColor, $count = 5) {
    $palette = [];
    list($r, $g, $b) = sscanf($baseColor, "#%02x%02x%02x");

    for ($i = 0; $i < $count; $i++) {
        $factor = 1 - ($i * 0.15);
        $palette[] = sprintf("#%02x%02x%02x",
            max(0, min(255, $r * $factor)),
            max(0, min(255, $g * $factor)),
            max(0, min(255, $b * $factor))
        );
    }

    return $palette;
}

// depuisGETParamètre Lire la couleur de base
$baseColor = isset($_GET['color']) ? $_GET['color'] : '#3498db';

// Générer une palette de couleurs
$palette = generatePalette($baseColor);

// Créer une toile
$width = 500;
$height = 100;
$image = imagecreatetruecolor($width, $height);

// Remplir l&#39;arrière-plan
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);

// Dessiner la palette de couleurs
$segmentWidth = $width / count($palette);

foreach ($palette as $index => $hex) {
    list($r, $g, $b) = sscanf($hex, "#%02x%02x%02x");
    $color = imagecolorallocate($image, $r, $g, $b);
    imagefilledrectangle(
        $image,
        $index * $segmentWidth,
        0,
        ($index + 1) * $segmentWidth,
        $height,
        $color
    );
}

// Facultatif:Étiquetez le code couleur sur le diagramme
foreach ($palette as $index => $hex) {
    $textColor = imagecolorallocate($image, 0, 0, 0);
    imagestring(
        $image,
        3,
        $index * $segmentWidth + 10,
        $height / 2 - 7,
        $hex,
        $textColor
    );
}

// Image de sortie
imagepng($image);
imagedestroy($image);
?>

Exemple d'appel

Si vous enregistrez le code ci-dessus en tant que palette.php , vous pouvez y accéder de la manière suivante:

 https://m66.net/palette.php?color=%23e74c3c

Cela génère une palette basée sur le rouge ( # E74C3C ) et renvoie l'image.

Choses à noter

  • Étant donné que la sortie est le contenu de l'image, il ne peut y avoir de sortie HTML ou d'espace dans le script, sinon l'image sera corrompue.

  • Le nombre de palettes de couleurs peut être ajusté de manière flexible au besoin.

  • Pour des scénarios d'application plus complexes, vous pouvez ajouter des fonctions avancées telles que le gradient, les couleurs aléatoires et la correspondance de différentes couleurs.

Résumer

Grâce à cet article, nous apprenons à générer dynamiquement une palette de couleurs et à la rendre comme une image en utilisant PHP. Cette petite astuce peut être appliquée de manière flexible à une variété de scénarios, tels que le générateur d'avatar, la configuration de la peau de jeu, l'aperçu des couleurs du thème, etc.
À l'avenir, vous pouvez davantage vous développer en fonction de cela, comme la combinaison de la théorie des couleurs pour générer une palette de couleurs plus coordonnée, ou combiner l'IA pour générer un schéma de couleurs personnalisé.