100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > gd剪裁圆形图片 php_PHP下图片裁剪 圆形 合并

gd剪裁圆形图片 php_PHP下图片裁剪 圆形 合并

时间:2024-06-21 10:20:30

相关推荐

gd剪裁圆形图片 php_PHP下图片裁剪 圆形 合并

好把,标题就这样叫吧。

这个源码是从网上找的,不过源码是有问题的,我稍微做了修改,并且测试可行。

向原作者直径。

先上一个处理完的图形。

代码:

/**

*==============================================

* Description 生成图片

*==============================================

*

* @FILE_NAME : makeImg.php

* @author : zuiw

* @MailAddr : mr.lintao@

* @copyright : Copyright (c)

* @DATE : -9-2 上午12:50:48

*

* 原作者:friker

*

*

*--------------------------------------------------------------------------------------------

* @Mark :

* @Tutorial :

* @Todo :

*--------------------------------------------------------------------------------------------

*/

$a = new ImageController();

$b = $a->index();

class ImageController{

public function __construct()

{

date_default_timezone_set('Asia/Shanghai');

error_reporting( E_ALL&~E_NOTICE&~E_WARNING);

}

/**

* @todo : 本函数用于 将方形的图片压缩后

* 再裁减成圆形 做成logo

* 与背景图合并

* @return 返回url

*/

public function index(){

//头像

$headimgurl = 'head.jpg';

//背景图

$bgurl = 'hecheng.png';

$imgs['dst'] = $bgurl;

//第一步 压缩图片

$imggzip = $this->resize_img($headimgurl);

//第二步 裁减成圆角图片

$imgs['src'] = $this->test($imggzip);

//第三步 合并图片

$dest = $this->mergerImg($imgs);

echo $dest;exit;

}

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

for($y=0;$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;

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。