gd库处理图片(将正方形转换圆形) (调整 头像大小)(文字图片合并)(创建画布)

/* 正方形转换圆形图片
 *  $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);
        }

猜你喜欢

转载自blog.csdn.net/qq_30202073/article/details/83536937
今日推荐