美文网首页
php 图片水印imagecopymerge和imagecopy

php 图片水印imagecopymerge和imagecopy

作者: Lucus的随笔 | 来源:发表于2018-08-15 15:58 被阅读0次

    PHP给图片加水印常用imagecopymerge和 imagecopy两种合成方法。

    imagecopymerge可以把不符合大小尺寸的图片压缩或拉伸成合适的水印大小,并对整个水印图片加透明度,但水印图片内部的透明度会被填充为默认黑色,例如带圆角的图片。

    imagecopy可以对原图素材裁剪,但不做压缩或填充。合成后保留png本身的透明度,例如圆角logo。

    //作为打底的图片宽度600高度700
                $bgsrc = BASE_PATH.'/public/files/qrcode_bg.png';
                $info = getimagesize($bgsrc);
                $type = image_type_to_extension($info[2], false);
                $createImageFunc = "imagecreatefrom{$type}";
                $image = $createImageFunc($bgsrc);
    //二维码
                $imageMark = BASE_PATH.'/public/files/qrcode.png';
                $markInfo = getimagesize($imageMark);
                $markType = image_type_to_extension($markInfo[2], false);
                $markCreateImageFunc = "imagecreatefrom{$markType}";
                $waterSrc = $markCreateImageFunc($imageMark);
                $mask_width=342;
                $mask_height=342;
                $water = imagecreatetruecolor($mask_width, $mask_height);
    //进行压缩或拉伸有填充色
                imagecopyresampled($water, $waterSrc, 0, 0, 0, 0, $mask_width, $mask_height, $width, $height);
                imagecopymerge($image, $water, 130, 183, 0, 0, $mask_width, $mask_height, 100);
                imagedestroy($water);
    
    //带圆角的logo
                $imageMark = BASE_PATH.'/public/files/logo.png';
                list($width, $height) = getimagesize($imageMark);
                $markInfo = getimagesize($imageMark);
                $markType = image_type_to_extension($markInfo[2], false);
                $markCreateImageFunc = "imagecreatefrom{$markType}";
                $waterSrc = $markCreateImageFunc($imageMark);
    //无任何压缩拉伸只做裁剪可透明
                imagecopy($image,$waterSrc,264,324,0,0,$width, $height);
                imagedestroy($waterSrc);
    
    //添加字体水平居中
                $font = BASE_PATH.'/public/files/font/msyhbd.ttf';
                $fontSize=28;
                $fontColor = imagecolorallocate($image, 255, 255, 255);//设置颜色 rgb
                $fontBox = imagettfbbox($fontSize, 0, $font, $team->title);//文字水平居中实质
                imagettftext($image, $fontSize, 0, ceil((600 - $fontBox[2]) / 2), 78, $fontColor, $font, $team->title);//打印            //合成水印
                $outputfunc = "image{$type}";
                $fullCoverPath = BASE_PATH.'/public/files/qrcode_card.png';
                $outputfunc($image, $fullCoverPath);//保存路径
                imagedestroy($image);
    

    相关文章

      网友评论

          本文标题:php 图片水印imagecopymerge和imagecopy

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