/* 正方形转换圆形图片
* $url 小图 (绝对路径)
* $background 背景图 (绝对路径)
* */
function circular($url,$background){
$w = $h = 56;/* 头像大小 */
$c = imagecolorallocate($url, 255, 0, 0);
imagearc($url, $w/2, $h/2, $w, $h, 0, 360, $c);
imagefilltoborder($url, 0, 0, $c, $c);
imagefilltoborder($url, $w, 0, $c, $c);
imagefilltoborder($url, 0, $h, $c, $c);
imagefilltoborder($url, $w, $h, $c, $c);
imagecolortransparent($url, $c); //!!!!
$dm = imagecreatefromstring(file_get_contents($background));
imagecopymerge($dm, $url, 141,187, 0, 0, $w, $h, 100);
return $dm;
}
/*
* 调整 头像大小
* $srcImage 图片路径 (绝对路径)
* $maxwidth 动态设置图片宽度
* $maxheight 动态设置图片高度
* $name 后期追击参数 (动态设置图片名称)
* */
function resizeImage($srcImage,$maxwidth,$maxheight,$name=1)
{
list($width, $height, $type, $attr) = getimagesize($srcImage);
switch ($type) {
case 1:
$img = imagecreatefromgif($srcImage);
break;
case 2:
$img = imagecreatefromjpeg($srcImage);
break;
case 3:
$img = imagecreatefrompng($srcImage);
break;
default:
$img = imagecreatefrompng($srcImage);
break;
}
$canvas = imagecreatetruecolor($maxwidth,$maxheight); // 创建一个真彩色图像 我把它理解为创建了一个画布
imagecopyresampled($canvas,$img,0,0,0,0,$maxwidth,$maxheight,$width,$height);
// 选取原图片整个长宽上的像素,将原图片左上角和画布左上角对齐,画布宽100px,高100px。
// 这样设置是缩小或放大原图片。 如果原图片宽或高比画布大就会缩小,如果原图片宽或高比画布小就会放大。
// 如果想截取图片,不想放大或缩小。 就要将最后两个参数设置成分别和画布宽和高相等。 像这样:imagecopyresampled($canvas,$sourceImage,0,0,0,0,$newWidth,$newHeight,$newWidth,$newHeight);
// 如果想控制从哪里开始截取,就要设置后面两个“0”。 前面一个“0”是原图片上X轴坐标,后面一个是Y轴坐标。 比如,想从原图片X轴100px,Y轴50px的点开始截取。就要这样设置:imagecopyresampled($canvas,$sourceImage,0,0,100,50,$newWidth,$newHeight,$newWidth,$newHeight);
return $canvas;//返回参数为已经打开的图片格式
}
/* 文字图片合并
* $filename 图片路径
* $write 文字
* $leftOffset 左边距
* $rightOffset 上边距
*/
function wenzi($filename,$write='无名者',$leftOffset=10,$rightOffset=30){
$qCodeImg = imagecreatefromstring(file_get_contents('./1.png'));
$font = './simsun.ttc';//字体
$black = imagecolorallocate($qCodeImg, 0x00, 0x00, 0x00);//字体颜色
imagefttext($qCodeImg, 13, 0, $leftOffset, $rightOffset, $black, $font,$write);
//ob_start();
header('Content-Type:image/png');
imagepng($qCodeImg);
imagedestroy($qCodeImg);
//$data = ob_get_clean();
//$qr = "data:image/png;base64,".base64_encode($data);
//return $qr;
}
/*
* 创建画布并合并
*
*
* */
function test(){
$w = 50;//图片与画布左间距
$h = 50;//图片与画布上间距
$canvas_k = 370;//画布宽度
$canvas_g = 650;//画布高度
$bigImg = imagecreatetruecolor($canvas_k,$canvas_g);/* 创建画布 */
//增加一个白色的底,不然新建的画布是黑色的
$white = imagecolorallocate($bigImg, 255, 255, 255);
imagefill($bigImg, 0, 0, $white);
$qCodeImg = imagecreatefromstring(file_get_contents('./1.png'));
list($qCodeWidth, $qCodeHight) = getimagesize('./1.png');
//$qCodeWidth 图片的宽度 $qCodeHight 图片的高度(超出图片本身大小,则会由黑色底部填充)
imagecopy($bigImg,$qCodeImg, $w,$h, 0, 0,$qCodeWidth, $qCodeHight);
//输出图片
header("Content-type: image/png");
imagepng($bigImg);
}