Maison développement back-end tutoriel php Étapes pour utiliser la bibliothèque PHP et GD pour obtenir un effet de mosaïque d'images

Étapes pour utiliser la bibliothèque PHP et GD pour obtenir un effet de mosaïque d'images

Jul 12, 2023 pm 07:36 PM
php gd库 图片马赛克

Étapes pour obtenir un effet de mosaïque d'image à l'aide de PHP et de la bibliothèque GD

Introduction :
L'effet de mosaïque est une sorte de division de l'image en blocs de couleur pour former un effet décoratif ou de protection de la vie privée. En utilisant les bibliothèques PHP et GD, nous pouvons facilement réaliser des effets de mosaïque d'images. Cet article présentera les étapes à suivre pour obtenir l'effet mosaïque et fournira des exemples de code correspondants.

Étape 1 : Importer des images
Tout d'abord, nous devons importer une image qui doit être traitée. Téléchargez l'image sur le serveur et obtenez son chemin.

$sourceImagePath = 'path/to/source/image.jpg';
$sourceImage = imagecreatefromjpeg($sourceImagePath);
Copier après la connexion

Étape 2 : Déterminez la taille du bloc de mosaïque
Ensuite, nous devons déterminer la taille du bloc de mosaïque. La taille des blocs de mosaïque détermine la granularité de l’effet mosaïque final. Nous pouvons ajuster nous-mêmes cette valeur si nécessaire.

$blockSize = 10;
Copier après la connexion

Étape 3 : Créer l'image de sortie
En fonction de la taille de l'image qui nécessite l'effet mosaïque, nous créons une nouvelle ressource d'image pour la sortie. La largeur et la hauteur de l'image de sortie peuvent être calculées en fonction de la largeur et de la hauteur de l'image source.

$sourceImageWidth = imagesx($sourceImage);
$sourceImageHeight = imagesy($sourceImage);

$outputImage = imagecreatetruecolor($sourceImageWidth, $sourceImageHeight);
Copier après la connexion

Étape 4 : Traiter l'image
Avant de traiter l'image, nous devons parcourir chaque bloc de mosaïque de l'image source. Ensuite, déterminez la couleur moyenne à l’intérieur de chaque bloc de mosaïque et définissez tous les pixels du bloc de mosaïque sur cette couleur.

for ($x = 0; $x < $sourceImageWidth; $x += $blockSize) {
    for ($y = 0; $y < $sourceImageHeight; $y += $blockSize) {
        $averageColor = getAverageColor($sourceImage, $x, $y, $blockSize);
        fillBlockWithColor($outputImage, $x, $y, $blockSize, $averageColor);
    }
}

// 获取马赛克块内的平均颜色
function getAverageColor($image, $startX, $startY, $blockSize) {
    $totalR = 0;
    $totalG = 0;
    $totalB = 0;
    $count = 0;

    for ($i = $startX; $i < $startX + $blockSize; $i++) {
        for ($j = $startY; $j < $startY + $blockSize; $j++) {
            $rgb = imagecolorat($image, $i, $j);
            $r = ($rgb >> 16) & 0xFF;
            $g = ($rgb >> 8) & 0xFF;
            $b = $rgb & 0xFF;

            $totalR += $r;
            $totalG += $g;
            $totalB += $b;
            $count++;
        }
    }

    $averageR = round($totalR / $count);
    $averageG = round($totalG / $count);
    $averageB = round($totalB / $count);

    return imagecolorallocate($image, $averageR, $averageG, $averageB);
}

// 将马赛克块填充为指定颜色
function fillBlockWithColor($image, $startX, $startY, $blockSize, $color) {
    imagefilledrectangle($image, $startX, $startY, $startX + $blockSize, $startY + $blockSize, $color);
}
Copier après la connexion

Étape 5 : Sortir l'image
Enfin, nous devons enregistrer l'image traitée sur le serveur ou la sortir directement sur le navigateur.

$outputImagePath = 'path/to/output/image.jpg';
imagejpeg($outputImage, $outputImagePath);
imagedestroy($outputImage);
Copier après la connexion

Conclusion :
Grâce aux étapes ci-dessus, nous pouvons utiliser les bibliothèques PHP et GD pour obtenir des effets de mosaïque d'images. En ajustant la taille des blocs de mosaïque, nous pouvons contrôler la granularité de l'effet mosaïque. J'espère que cet article pourra vous aider à comprendre et à mettre en pratique le processus de création d'effets de mosaïque.

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 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

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Date et heure de CakePHP

Configuration du projet CakePHP Configuration du projet CakePHP Sep 10, 2024 pm 05:25 PM

Configuration du projet CakePHP

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Téléchargement de fichiers CakePHP

Routage CakePHP Routage CakePHP Sep 10, 2024 pm 05:25 PM

Routage CakePHP

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

Discuter de CakePHP

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Comment configurer Visual Studio Code (VS Code) pour le développement PHP

Guide rapide CakePHP Guide rapide CakePHP Sep 10, 2024 pm 05:27 PM

Guide rapide CakePHP

See all articles