Maison  >  Article  >  développement back-end  >  Comment définir l'image sur une image circulaire en php

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

藏色散人
藏色散人original
2021-11-04 10:28:522988parcourir

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

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

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

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!

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