美文网首页
微信头像修改为圆形然后合并背景图

微信头像修改为圆形然后合并背景图

作者: 茶饭不思 | 来源:发表于2020-12-31 16:01 被阅读0次

方法一

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

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); imagepng(newpic, dest_path); imagedestroy(newpic);
imagedestroy(src); // unlink(url);
return $dest_path;
}

方法二

avatar = __DIR__ . DIRECTORY_SEPARATOR . 'avatar.jpg';circleAvatar = DIR . DIRECTORY_SEPARATOR . 'avatar.png';
$r = 50;

function getCircleAvatar(avatar,circleAvatar, r) { /** * @des 画一个正方形 * @size 两个半径 */size = 2 * r;circle = new Imagick();
circle->newImage(size, size, 'none');circle->setimageformat('png');
$circle->setimagematte(true);

/**
 * @des     在矩形上画一个白色圆
 */
$draw = new ImagickDraw();
$draw->setfillcolor('#fff');
$draw->circle($r, $r, $r, $size);
$circle->drawimage($draw);

/**
 * @des     裁剪头像成圆形
 */
$imagick = new Imagick();
$imagick->readImage($avatar);
$imagick->setImageFormat('png');
$imagick->setimagematte(true);
$imagick->cropimage($size, $size, 30, 0); // 修改裁剪属性
$imagick->compositeimage($circle, Imagick::COMPOSITE_COPYOPACITY , 0, 0);
$imagick->writeImage($circleAvatar);
$imagick->destroy();

}

getCircleAvatar(avatar,circleAvatar, $r);

相关文章

网友评论

      本文标题:微信头像修改为圆形然后合并背景图

      本文链接:https://www.haomeiwen.com/subject/oqfroktx.html