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.
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['extension']) { case 'jpg': $src_img = imagecreatefromjpeg($imgpath); break; case 'png': $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!