AI智能
改变未来

thinkPHP5 生成海报(图片叠加定位)

放在common.php文件中

function getbgqrcode($imageDefault,$textDefault,$background,$filename=\"\",$config=array()){//如果要看报什么错,可以先注释调这个headerif(empty($filename)) header(\"content-type: image/png\");//背景方法$backgroundInfo = getimagesize($background);$ext = image_type_to_extension($backgroundInfo[2], false);$backgroundFun = \'imagecreatefrom\'.$ext;$background = $backgroundFun($background);$backgroundWidth = imagesx($background);  //背景宽度$backgroundHeight = imagesy($background);  //背景高度$imageRes = imageCreatetruecolor($backgroundWidth,$backgroundHeight);$color = imagecolorallocate($imageRes, 0, 0, 0);imagefill($imageRes, 0, 0, $color);imagecopyresampled($imageRes,$background,0,0,0,0,imagesx($background),imagesy($background),imagesx($background),imagesy($background));//处理了图片if(!empty($config[\'image\'])){foreach ($config[\'image\'] as $key => $val) {$val = array_merge($imageDefault,$val);$info = getimagesize($val[\'url\']);$function = \'imagecreatefrom\'.image_type_to_extension($info[2], false);/* if($val[\'stream\']){//如果传的是字符串图像流$info = getimagesizefromstring($val[\'url\']);$function = \'imagecreatefromstring\';}*/$res = $function($val[\'url\']);$resWidth = $info[0];$resHeight = $info[1];//建立画板 ,缩放图片至指定尺寸$canvas=imagecreatetruecolor($val[\'width\'], $val[\'height\']);imagefill($canvas, 0, 0, $color);//关键函数,参数(目标资源,源,目标资源的开始坐标x,y, 源资源的开始坐标x,y,目标资源的宽高w,h,源资源的宽高w,h)imagecopyresampled($canvas, $res, 0, 0, 0, 0, $val[\'width\'], $val[\'height\'],$resWidth,$resHeight);$val[\'left\'] = $val[\'left\']<0?$backgroundWidth- abs($val[\'left\']) - $val[\'width\']:$val[\'left\'];$val[\'top\'] = $val[\'top\']<0?$backgroundHeight- abs($val[\'top\']) - $val[\'height\']:$val[\'top\'];//放置图像imagecopymerge($imageRes,$canvas, $val[\'left\'],$val[\'top\'],$val[\'right\'],$val[\'bottom\'],$val[\'width\'],$val[\'height\'],$val[\'opacity\']);//左,上,右,下,宽度,高度,透明度}}//处理文字if(!empty($config[\'text\'])){foreach ($config[\'text\'] as $key => $val) {$val = array_merge($textDefault,$val);list($R,$G,$B) = explode(\',\', $val[\'fontColor\']);$fontColor = imagecolorallocate($imageRes, $R, $G, $B);$val[\'left\'] = $val[\'left\']<0?$backgroundWidth- abs($val[\'left\']):$val[\'left\'];$val[\'top\'] = $val[\'top\']<0?$backgroundHeight- abs($val[\'top\']):$val[\'top\'];imagettftext($imageRes,$val[\'fontSize\'],$val[\'angle\'],$val[\'left\'],$val[\'top\'],$fontColor,$val[\'fontPath\'],$val[\'text\']);}}// $filename = \'/uploads/haibao/\' . time().mt_rand(1000,9999).\'.png\';//生成图片if(!empty($filename)){$res = imagejpeg ($imageRes,$filename,90);//保存到本地imagedestroy($imageRes);}else{imagejpeg ($imageRes);//在浏览器上显示imagedestroy($imageRes);}}

在控制器中 放入一下代码
做了一个文件替换 生成新图 没做出来 等下次用的时候 修改一下

/*生成海报*/public function get_poster($poster,$erwei){//$erwei = $erwei;//  $erwei = ROOT_PATH . \'public\'.$erwei;$poster = substr($poster, 1);//dump($erwei);die;$imageDefault = array(\'left\'=>250,\'top\'=>560,\'right\'=>0,\'bottom\'=>0,\'width\'=>250,\'height\'=>250,\'opacity\'=>100);$textDefault = array(\'text\'=>\'\',\'left\'=>0,\'top\'=>0,\'fontSize\'=>32,       //字号\'fontColor\'=>\'255,255,255\', //字体颜色\'angle\'=>0,);$background = ROOT_PATH . \'/public/hb.png\';//海报最底层得背景$config[\'image\'][][\'url\'] = ROOT_PATH . \'public\'.$erwei;$filename =  $poster;//$filename = \'/uploads/haibao/\' . time().mt_rand(1000,9999).\'.png\';getbgqrcode($imageDefault,$textDefault,$background,$filename,$config);return $filename;//echo \"<center><img src=\'\".$filename.\"\' width=\'400\'/></center>\";}
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » thinkPHP5 生成海报(图片叠加定位)