Maison > Article > développement back-end > PHP implémente l'ajout d'une icône de logo circulaire à l'image d'arrière-plan
Cet article présente principalement la méthode d'ajout d'une icône de logo circulaire à l'image d'arrière-plan en PHP. Il analyse en détail les étapes de fonctionnement et les techniques de mise en œuvre spécifiques pour ajouter l'icône de logo à l'image d'arrière-plan PHP sous forme d'exemples. dans le besoin peuvent se référer à ce qui suit
Dites-moi les étapes :
Il y a 3 étapes au total :
1. Compressez le logo en une image carrée de. une taille fixe
2. Convertir le logo en cercle Façonner le logo
3 Fusionner le logo avec l'image de fond
Sans plus attendre, passons directement au code :
<?php /** * 作者:friker * 开发时间:20160516 * 功能:图片处理 * */ class ImageController extends CI_Controller{ public function __construct() { parent::__construct(); date_default_timezone_set('Asia/Shanghai'); error_reporting( E_ALL&~E_NOTICE&~E_WARNING); $this->load->library('curl'); } /** * @todo : 本函数用于 将方形的图片压缩后 * 再裁减成圆形 做成logo * 与背景图合并 * @return 返回url */ public function index(){ //头像 $headimgurl = 'a.jpg'; //背景图 $bgurl = './aa.png'; $imgs['dst'] = $bgurl; //第一步 压缩图片 $imggzip = $this->resize_img($headimgurl); //第二步 裁减成圆角图片 $imgs['src'] = $this->test($imggzip); //第三步 合并图片 $dest = $this->mergerImg($imgs); } public function resize_img($url,$path='./'){ $imgname = $path.uniqid().'.jpg'; $file = $url; list($width, $height) = getimagesize($file); //获取原图尺寸 $percent = (110/$width); //缩放尺寸 $newwidth = $width * $percent; $newheight = $height * $percent; $src_im = imagecreatefromjpeg($file); $dst_im = imagecreatetruecolor($newwidth, $newheight); imagecopyresized($dst_im, $src_im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); imagejpeg($dst_im, $imgname); //输出压缩后的图片 imagedestroy($dst_im); imagedestroy($src_im); return $imgname; } //第一步生成圆角图片 public function test($url,$path='./'){ $w = 110; $h=110; // original size $original_path= $url; $dest_path = $path.uniqid().'.png'; $src = imagecreatefromstring(file_get_contents($original_path)); $newpic = imagecreatetruecolor($w,$h); imagealphablending($newpic,false); $transparent = imagecolorallocatealpha($newpic, 0, 0, 0, 127); $r=$w/2; for($x=0;$x<$w;$x++) for($y=0;$y<$h;$y++){ $c = imagecolorat($src,$x,$y); $_x = $x - $w/2; $_y = $y - $h/2; if((($_x*$_x) + ($_y*$_y)) < ($r*$r)){ imagesetpixel($newpic,$x,$y,$c); }else{ imagesetpixel($newpic,$x,$y,$transparent); } } imagesavealpha($newpic, true); // header('Content-Type: image/png'); imagepng($newpic, $dest_path); imagedestroy($newpic); imagedestroy($src); unlink($url); return $dest_path; } //php 合并图片 public function mergerImg($imgs,$path='./') { $imgname = $path.rand(1000,9999).uniqid().'.jpg'; list($max_width, $max_height) = getimagesize($imgs['dst']); $dests = imagecreatetruecolor($max_width, $max_height); $dst_im = imagecreatefrompng($imgs['dst']); imagecopy($dests,$dst_im,0,0,0,0,$max_width,$max_height); imagedestroy($dst_im); $src_im = imagecreatefrompng($imgs['src']); $src_info = getimagesize($imgs['src']); imagecopy($dests,$src_im,270,202,0,0,$src_info[0],$src_info[1]); imagedestroy($src_im); // var_dump($imgs);exit; // header("Content-type: image/jpeg"); imagejpeg($dests,$imgname); // unlink($imgs['dst']); unlink($imgs['src']); return $imgname; } }
Affichage des résultats :
Ce qui précède représente l'intégralité du contenu de cet article , j'espère que cela sera utile à l'étude de chacun.
Recommandations associées :
Tutoriel sur l'exportation rapide de données de table avec 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!