Maison > développement back-end > Problème PHP > Comment définir l'image sur une image circulaire en php

Comment définir l'image sur une image circulaire en php

藏色散人
Libérer: 2023-03-13 17:48:01
original
3007 Les gens l'ont consulté

Comment définir l'image sur une image circulaire en php : 1. Créez un exemple de fichier PHP ; 2. Créez une image transparente ; 2. Traitez l'image via la méthode "function yuan_img($imgpath) {...}" Faites simplement le tour.

Comment définir l'image sur une image circulaire en php

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3

Comment définir l'image sur une image circulaire en php ?

Traitement de circularisation d'image php :

Les fonctions de la bibliothèque php gd utilisées sont

imagecolorat
imagesetpixel
Copier après la connexion

Tout d'abord, traitez l'image en cercle :

L'image originale est la suivante :


Traitement du effet après passage :

Utilisez la formule suivante pour calculer

(x-a)*(x-a)+(y-b)*(y-b)<r2
Copier après la connexion

L'établissement de la formule signifie que le point x, y actuel est dans le cercle

x, y sont les coordonnées actuelles

a, b sont les positions centrales du cercle

r est Radius

Créez d'abord une image transparente,

puis numérisez l'image originale ligne par ligne comme si les pixels étaient dans le cercle et dessinez les pixels qui n'y sont pas, gardez simplement le transparent color

function yuan_img($imgpath) {
        $ext     = pathinfo($imgpath);
        $src_img = null;
        switch ($ext[&#39;extension&#39;]) {
        case &#39;jpg&#39;:
            $src_img = imagecreatefromjpeg($imgpath);
            break;
        case &#39;png&#39;:
            $src_img = imagecreatefrompng($imgpath);
            break;
        }
        $wh  = getimagesize($imgpath);
        $w   = $wh[0];
        $h   = $wh[1];
        $w   = min($w, $h);
        $h   = $w;
        $img = imagecreatetruecolor($w, $h);
        //这一句一定要有
        imagesavealpha($img, true);
        //拾取一个完全透明的颜色,最后一个参数127为全透明
        $bg = imagecolorallocatealpha($img, 255, 255, 255, 127);
        imagefill($img, 0, 0, $bg);
        $r   = $w / 2; //圆半径
        $y_x = $r; //圆心X坐标
        $y_y = $r; //圆心Y坐标
        for ($x = 0; $x < $w; $x++) {
            for ($y = 0; $y < $h; $y++) {
                $rgbColor = imagecolorat($src_img, $x, $y);
                if (((($x - $r) * ($x - $r) + ($y - $r) * ($y - $r)) < ($r * $r))) {
                    imagesetpixel($img, $x, $y, $rgbColor);
                }
            }
        }
        return $img;
    }
Copier après la connexion

Apprentissage recommandé : "Tutoriel vidéo PHP

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