每次合成图片都是要重新在找,而且每次都记不住这几个函数的作用,也算是比较常用的功能,
还是记录下来,免得下次又要到处翻
这个是将文字和图片合成的代码:
$img = imagecreatefrompng($qrcodeurl); //创建画布并载入图像
$maxwidth = $w; //设置画布宽度
$maxheight = $w+40; //设置画布高度
$canvas = imagecreatetruecolor($maxwidth,$maxheight); //创建画布
$color = imagecolorallocate($canvas,255,255,255); //设置颜色
imagefill($canvas,0,0,$color); //填充颜色
list($width, $height, $type, $attr) = getimagesize($qrcodeurl); //获取图片的宽.高.类型
imagecopyresampled($canvas,$img,0,0,0,0,$maxwidth,$w,$width,$height); //把已有图像拷贝进刚创建的画布:新画布,已载图像,位置x,位置y,裁入x,裁入y,宽,高,载入宽,载入高
$font = '/fonts/msyh.ttf'; //字体文件
$black = imagecolorallocate($img, 0, 0, 0); //字体颜色(RGB)
$fontSize = 14; //字体大小
$circleSize = 0; //旋转角度
$left = $w/15; //左边距
$top = $w+20; //上边距
imagefttext($canvas, $fontSize, $circleSize, $left, $top, $black, $font, '文字');
$file_save_path = "qrcode/".$lid."-".$w.".png";
// header('Content-Type:image/png');
imagepng($canvas,$file_save_path,1);
//销毁照片
imagedestroy($canvas);
return "<img src='/".$file_save_path."'>";
以下是合并图片的函数,记得经常看到一个用装备做注释,那个感觉简单易懂,但是没找到了,等找到再贴进来吧
/**
* 将src_im合入dst_im
* @param dst_x 距左
* @param dst_y 距顶
* @param src_w 合入宽
* @param src_h 合入高
* @param pct 透明度
*/
public function imagecopymerge_alpha($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $pct){
$opacity=$pct;
$w = imagesx($src_im);
$h = imagesy($src_im);
$cut = imagecreatetruecolor($src_w, $src_h);
imagesavealpha($cut, true);
$bg = imagecolorallocatealpha($cut, 255, 255, 255, 127);
imagefill($cut, 0, 0, $bg);
imagecopy($cut, $dst_im, 0, 0, $dst_x, $dst_y, $src_w, $src_h);
imagecopy($cut, $src_im, 0, 0, $src_x, $src_y, $src_w, $src_h);
imagecopymerge($dst_im, $cut, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $opacity);
}
生成二维码函数
public function getQrcode($lid,$level=3,$size=8){
$url = "http://www.baidu.com";
Vendor('phpqrcode.phpqrcode');
$errorCorrectionLevel =intval($level) ; //容错级别
$matrixPointSize = intval($size); //生成图片大小
$object = new \QRcode();
ob_clean();
$object->png($url, false, $errorCorrectionLevel, $matrixPointSize, 2);
exit();
}