php 图片水印imagecopymerge和imagecopy

2018-08-15  本文已影响0人  Lucus的随笔

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);
上一篇下一篇

猜你喜欢

热点阅读