select_all('admin_jobwhb', $whereData, $data['field']); $style = array(); foreach ($list as $key => $value) { if ($value['pic']) { $list[$key]['pic_n'] = checkpic($value['pic']); } if ($data['only']==1){ if (!in_array($value['style'], $style)){ $style[] = $value['style']; }else{ unset($list[$key]); } } } } return $list; } public function getWhb($whereData = array(), $data = array()) { if (!empty($whereData)) { $data['field'] = empty($data['field']) ? '*' : $data['field']; $whb = $this->select_once('admin_jobwhb', $whereData, $data['field']); if (isset($whb['pic'])) { $whb['pic_n'] = checkpic($whb['pic']); } return $whb; } } public function updateWhb($updata = array(), $whereData = array()) { if (!empty($whereData)) { $return = $this->update_once('admin_jobwhb', $updata, $whereData); } } public function delWhb($whereData = array()) { if (!empty($whereData)) { $return = $this->delete_all('admin_jobwhb', $whereData, ''); } } public function setWhb($updata = array(), $whereData = array()) { if (trim($updata['name']) == '') { return array('msg' => '海报名称不能为空!', 'errcode' => 8); } if (!empty($whereData)) { $return['id'] = $this->update_once('admin_jobwhb', $updata, $whereData); $return['msg'] = '微海报更新'; } else { $return['id'] = $this->insert_into('admin_jobwhb', $updata); $return['msg'] = '微海报添加'; } $return['errcode'] = $return['id'] ? '9' : '8'; $return['msg'] = $return['id'] ? $return['msg'] . '成功!' : $return['msg'] . '失败!'; return $return; } function getJobHb($data = array()) { if (!empty($data)) { $whb = $this->getWhb(array('id' => $data['hb'])); if (!isset($this->config['sy_oss']) || $this->config['sy_oss'] != 1) { $imgFile = str_replace($this->config['sy_weburl'].'/data/', DATA_PATH, $whb['pic_n']); } else { $imgFile = $whb['pic_n']; } $jobId = $data['id']; $job = $this->getJobInfo(array('id' => $jobId, 'status' => 0, 'state' => 1), array('hb' => 1)); if (!empty($job) && is_array($job)) { $jobCity = !empty($job['job_city_two']) ? $job['job_city_two'] : $job['job_city_one']; $jobExp = !empty($job['job_exp']) ? $job['job_exp'] : '经验不限'; $jobEdu = !empty($job['job_edu']) ? $job['job_edu'] : '学历不限'; if (!isset($this->config['sy_oss']) || $this->config['sy_oss'] != 1) { $job['com_logo_n'] = str_replace($this->config['sy_weburl'] . '/data/', DATA_PATH, $job['com_logo_n']); } $imgConfig = array( 'text' => array( array( 'text' => mb_substr($job['name'], 0, 16, 'utf-8'), 'left' => 116, 'top' => 1499, 'fontSize' => '40px', //字号 'fontColor' => '0,0,0' //字体颜色 ), array( 'text' => $job['job_salary'], 'left' => 116, 'top' => 1605, 'fontSize' => '40px', //字号 'fontColor' => '255,0,0' //字体颜色 ), array( 'text' => mb_substr($job['com_name'], 0, 15, 'utf-8'), 'left' => 240, 'top' => 1710, 'fontSize' => '28px', //字号 'fontColor' => '51,51,51' //字体颜色 ), array( 'text' => mb_substr($jobCity . ' - ' . $jobExp . ' - ' . $jobEdu . '学历', 0, 35, 'utf-8'), 'left' => 240, 'top' => 1760, 'fontSize' => '22px', //字号 'fontColor' => '102,102,102', //字体颜色 ), array( 'text' => '长按识别二维码', 'left' => 782, 'top' => 1760, 'fontSize' => '22px', //字号 'fontColor' => '102,102,102', //字体颜色 ) ), 'image' => array( array( 'url' => Url('wap', array('c' => 'job', 'a' => 'comapply', 'id' => $jobId)), //二维码资源 'qrcode' => array('c'=>'job','id'=>$jobId), 'stream' => 0, 'left' => 790, 'top' => -190, 'right' => 0, 'bottom' => 0, 'width' => 180, 'height' => 180, 'opacity' => 100 ), array( 'url' => $job['com_logo_n'], // 企业LOGO 'stream' => 0, 'left' => 116, 'top' => -150, 'right' => 0, 'bottom' => 0, 'width' => 100, 'height' => 100, 'opacity' => 100 ) ), 'background' => $imgFile //背景图 ); if($this->config['sy_haibao_web_type'] == 1){ // 自定义网站名称 $imgConfig['text'][] = array( 'text' => $this->config['sy_haibao_web_name'], 'left' => 50, 'top' => 140, 'fontSize' => '60px', //字号 'fontColor' => '255,255,255' //字体颜色 ); } elseif ($this->config['sy_haibao_web_type'] == 2){ $web_logo = $this->config['sy_ossurl'] . '/' . $this->config['sy_haibao_web_logo']; $imgsize = @getimagesize($web_logo); if($imgsize){ // 图片宽高获取成功 $imgConfig['image'][] = array( 'url' => $web_logo, 'stream' => 0, 'left' => 50, 'top' => 70, // 'right' => 0, // 'bottom' => 0, 'width' => $imgsize[0], 'height' => $imgsize[1], 'opacity' => 100, 'c_opacity' => 1, ); } } echo $this->createPoster($imgConfig); } } } function getInviteRegHb($data = array()) { if (!empty($data)) { $whb = $this->getWhb(array('id' => $data['hb'])); if (!isset($this->config['sy_oss']) || $this->config['sy_oss'] != 1) { $imgFile = str_replace($this->config['sy_weburl'].'/data/', DATA_PATH, $whb['pic_n']); } else { $imgFile = $whb['pic_n']; } $imgConfig = array( 'text' => array(), 'image' => array( array( 'url' => Url('wap', array('c' => 'register', 'uid' => $data['uid'])), //二维码资源 'qrcode' => array('c'=>'register','id'=>$data['uid']), 'stream' => 0, 'left' => 305, 'top' => 658, 'right' => 0, 'bottom' => 0, 'width' => 470, 'height' => 470, 'opacity' => 100 ) ), 'background' => $imgFile //背景图 ); if($this->config['sy_haibao_web_type'] == 1){ // 自定义网站名称 $imgConfig['text'][] = array( 'text' => $this->config['sy_haibao_web_name'], 'left' => 50, 'top' => 140, 'fontSize' => '60px', //字号 'fontColor' => '255,255,255' //字体颜色 ); } elseif ($this->config['sy_haibao_web_type'] == 2){ $web_logo = $this->config['sy_ossurl'] . '/' . $this->config['sy_haibao_web_logo']; $imgsize = @getimagesize($web_logo); if($imgsize){ // 图片宽高获取成功 $imgConfig['image'][] = array( 'url' => $web_logo, 'stream' => 0, 'left' => 50, 'top' => 70, // 'right' => 0, // 'bottom' => 0, 'width' => $imgsize[0], 'height' => $imgsize[1], 'opacity' => 100, 'c_opacity' => 1, ); } } echo $this->createPoster($imgConfig); } } function getGongzhaoHb($data=array()){ if (!empty($data)) { $whb = $this->getWhb(array('id' => $data['hb'])); if (!isset($this->config['sy_oss']) || $this->config['sy_oss'] != 1) { $imgFile = str_replace($this->config['sy_weburl'].'/data/', DATA_PATH, $whb['pic_n']); } else { $imgFile = $whb['pic_n']; } $gongzhao = $this->select_once('gongzhao',array('id'=>$data['id']),'`title`,`pic`,`description`'); $imgConfig = array( 'text' => array(), 'image' => array( array( 'url' => Url('wap', array('c' => 'gongzhao','a'=>'show','id' => $data['id'])), //二维码资源 'qrcode' => array('c'=>'gongzhao','id'=>$data['id']), 'stream' => 0, 'left' => 365, 'top' => 1330, 'right' => 0, 'bottom' => 0, 'width' => 350, 'height' => 350, 'opacity' => 100 ) ), 'background' => $imgFile //背景图 ); $bottom_text = $this->config['sy_webname']; if($this->config['sy_haibao_web_name']){ $bottom_text = $this->config['sy_haibao_web_name']; } if($bottom_text!=''){ $bottom_text_fontSize = 20; $box = imagettfbbox($bottom_text_fontSize,0,TPL_PATH . 'wap/hb_job/OPPOSans-M.ttf',$bottom_text); $bottom_text_left= 540-floor(($box[2]-$box[0])/2); $imgConfig['text'][] = array( 'text' => $bottom_text, 'left' => $bottom_text_left, 'top' => 1900, 'fontSize' => $bottom_text_fontSize, //字号 磅值不是像素 'fontColor' => '50,50,50', //字体颜色 ); } if($this->config['sy_haibao_web_type'] == 1){ // 自定义网站名称 $imgConfig['text'][] = array( 'text' => $this->config['sy_haibao_web_name'], 'left' => 50, 'top' => 140, 'fontSize' => '60px', //字号 'fontColor' => '0,0,0' //字体颜色 ); } elseif ($this->config['sy_haibao_web_type'] == 2){ $web_logo = $this->config['sy_ossurl'] . '/' . $this->config['sy_haibao_web_logo']; $imgsize = @getimagesize($web_logo); if($imgsize){ // 图片宽高获取成功 $imgConfig['image'][] = array( 'url' => $web_logo, 'stream' => 0, 'left' => 50, 'top' => 70, 'width' => $imgsize[0], 'height' => $imgsize[1], 'opacity' => 100, 'c_opacity' => 1, ); } } if(!empty($gongzhao['title'])){ $tthharr = array( 'top' => 270, 'fontsize' => 40, 'width' => 980, 'left' => 50, 'hang_size' => 70, 'bottom' => 410 ); $tthhres=$this->txtHuanHang($tthharr,$gongzhao['title']); foreach ($tthhres as $ttk => $ttv) { $imgConfig['text'][] = $ttv; } } if(!empty($gongzhao['description'])){ $deschharr = array( 'top' => 1050, 'fontsize' => 30, 'width' => 980, 'left' => 50, 'hang_size' => 52, 'bottom' => 1270, 'fontcolor' => '50,50,50', ); $deschhres=$this->txtHuanHang($deschharr,strip_tags($gongzhao['description'])); foreach ($deschhres as $hhk => $hhv) { $imgConfig['text'][] = $hhv; } } if(!empty($gongzhao['pic'])){ $gz_middle_pic = checkpic($gongzhao['pic']);; }else{ $gz_middle_pic = APP_PATH.$this->config['sy_gongzhaologo']; } $gz_imgsize = @getimagesize($gz_middle_pic); $imgConfig['image'][] = array( 'url' => $gz_middle_pic, 'stream' => 0, 'left' => 50, 'top' => 400, 'right' => 0, 'bottom' => 0, 'width' => 980, 'height' => 538, 'opacity' => 100, 'c_opacity' => 1, ); echo $this->createPoster($imgConfig); } } /** 长文本换行 $pos 数组 top顶端距离 width:每行宽度,left左边距,hang_size行高 $str 文本 */ private function txtHuanHang($pos, $str) { $return = array(); $_str_h = $pos["top"]; $fontsize = $pos["fontsize"]; $fontcolor = $pos["fontcolor"]?$pos["fontcolor"]:'0,0,0'; $width = $pos["width"]; $margin_lift = $pos["left"]; $hang_size = $pos["hang_size"]; $bottom = $pos["bottom"]; $temp_string = ""; $font_file = TPL_PATH . 'wap/hb_job/OPPOSans-M.ttf'; $tp = 0; for ($i = 0; $i < mb_strlen($str); $i++) { $box = imagettfbbox($fontsize, 0, $font_file, $temp_string); $_string_length = $box[2] - $box[0]; $temptext = mb_substr($str, $i, 1); $temp = imagettfbbox($fontsize, 0, $font_file, $temptext); if ($_string_length + $temp[2] - $temp[0] < $width) {//长度不够,字数不够,需要 //继续拼接字符串。 $temp_string .= mb_substr($str, $i, 1); if ($i == mb_strlen($str) - 1) {//是不是最后半行。不满一行的情况 $return[] = array( 'text' => $temp_string, 'left' => $margin_lift, 'top' => $_str_h, 'fontSize' => $fontsize, //字号 'fontColor' => $fontcolor //字体颜色 ); $_str_h += $hang_size;//计算整个文字换行后的高度。 $tp++;//行数 } } else {//一行的字数够了,长度够了。 // 打印输出,对字符串零时字符串置null $texts = mb_substr($str, $i, 1);//零时行的开头第一个字。 $i--; $tmp_str_len = mb_strlen($temp_string); $s = mb_substr($temp_string, $tmp_str_len-1, 1);//取零时字符串最后一位字符 $return[] = array( 'text' => $temp_string, 'left' => $margin_lift, 'top' => $_str_h, 'fontSize' => $fontsize, //字号 'fontColor' => $fontcolor //字体颜色 ); // 计算行高,和行数。 $_str_h += $hang_size; $tp++; // 写完了改行,置null该行的临时字符串。 $temp_string = ""; } //下一行如果大于规定顶部距离的话就结束循环 if($_str_h+$hang_size>$bottom){ break; } } return $return; } private function getJobInfo($where, $data) { require_once('job.model.php'); $JobM = new job_model($this->db, $this->def); return $JobM->getInfo($where, $data); } private function getJobList($where, $data) { require_once('job.model.php'); $JobM = new job_model($this->db, $this->def); return $JobM->getHbJobList($where, $data); } function getComHb($data = array()) { if (!empty($data)) { $comId = $data['uid']; $com = $this->getComInfo($comId, array('field' => 'uid, name, shortname, logo, mun, hy', 'logo' => 1, 'hb' => 1)); if (!empty($com['shortname'])){ $com['name'] = $com['shortname']; } if ($data['hb']){ $whb = $this->getWhb(array('id' => $data['hb'])); }else{ if ($data['jobids']){ $jobIdA = explode(',', $data['jobids']); $num = count($jobIdA); }else{ $num = $this->select_num('company_job', array('state' => 1, 'status' => '0', 'r_status' => 1, 'uid' => $comId)); } $whb = $this->getWhb(array('style' => $data['style'], 'num' => $num)); if (empty($whb)){ $whb = $this->getWhb(array('style' => $data['style'], 'num' => array('<', $num), 'orderby' => 'num, desc')); } } if (!isset($this->config['sy_oss']) || $this->config['sy_oss'] != 1) { $imgFile = str_replace($this->config['sy_weburl'].'/data/', DATA_PATH, $whb['pic_n']); } else { $imgFile = $whb['pic_n']; } $num = $whb['num']; if (isset($data['jobids'])){ $jobWhere = array( 'uid' => $comId, 'id' => array('in', $data['jobids']), 'orderby' => 'lastupdate, desc', 'limit' => $num ); }else{ $jobWhere = array( 'uid' => $comId, 'state' => 1, 'status' => 0, 'r_status' => 1, 'orderby' => 'lastupdate, desc', 'limit' => $num ); } $jobs = $this->getJobList($jobWhere, array('field' => 'id, name, minsalary, maxsalary', 'hb' => 1)); if (!empty($com) && is_array($com)) { $comMun = !empty($com['mun_n']) ? $com['mun_n'] : ''; $comHy = !empty($com['hy_n']) ? $com['hy_n'] : ''; if (!isset($this->config['sy_oss']) || $this->config['sy_oss'] != 1) { $com['logo_n'] = str_replace($this->config['sy_weburl'] . '/data/', DATA_PATH, $com['logo']); }else{ $com['logo_n'] = checkpic($com['logo']); } $jobOneName = $jobTwoName = $jobThreeName = $jobFourName = $jobFiveName = $jobSixName = ''; $jobOneXZ = $jobTwoXZ = $jobThreeXZ = $jobFourXZ = $jobFiveXZ = $jobSixXZ = ''; foreach ($jobs as $jk => $jv) { if (strlen($jv['name']) > 24){ $jv['name'] = mb_substr($jv['name'].$jv['name'], 0, 8, 'utf-8').'...'; } if ($jk == 0){ $jobOneName = $jv['name']; $jobOneXZ = $jv['job_salary']; } if ($jk == 1){ $jobTwoName = $jv['name']; $jobTwoXZ = $jv['job_salary']; } if ($jk == 2){ $jobThreeName = $jv['name']; $jobThreeXZ = $jv['job_salary']; } if ($jk == 3){ $jobFourName = $jv['name']; $jobFourXZ = $jv['job_salary']; } if ($jk == 4){ $jobFiveName = $jv['name']; $jobFiveXZ = $jv['job_salary']; } if ($jk == 5){ $jobSixName = $jv['name']; $jobSixXZ = $jv['job_salary']; } } $textArr = array( array( 'text' => mb_substr($com['name'], 0, 12, 'utf-8'), 'left' => 250, 'top' => -350, 'fontSize' => '30px', //字号 'fontColor' => '0,0,0' //字体颜色 ), array( 'text' => $comMun.' | '.$comHy, 'left' => 250, 'top' => -280, 'fontSize' => '20px', //字号 'fontColor' => '128,128,128' //字体颜色 ) ); if (isset($jobOneName)){ array_push($textArr, array( 'text' => $jobOneName, 'left' => 120, 'top' => -570, 'fontSize' => '40px', 'fontColor' => '0,0,0' ), array( 'text' => $jobOneXZ, 'left' => -450, 'top' => -570, 'fontSize' => '30px', 'fontColor' => '255,0,0' ) ); } if (isset($jobTwoName) && $whb['num'] >= 2){ array_push($textArr, array( 'text' => $jobTwoName, 'left' => 120, 'top' => -670, 'fontSize' => '40px', 'fontColor' => '0,0,0' ), array( 'text' => $jobTwoXZ, 'left' => -450, 'top' => -670, 'fontSize' => '30px', 'fontColor' => '255,0,0' ) ); } if (isset($jobThreeName) && $whb['num'] >= 3){ array_push($textArr, array( 'text' => $jobThreeName, 'left' => 120, 'top' => -770, 'fontSize' => '40px', 'fontColor' => '0,0,0' ), array( 'text' => $jobThreeXZ, 'left' => -450, 'top' => -770, 'fontSize' => '30px', 'fontColor' => '255,0,0' ) ); } if (isset($jobFourName) && $whb['num'] >= 4){ array_push($textArr, array( 'text' => $jobFourName, 'left' => 120, 'top' => -870, 'fontSize' => '40px', 'fontColor' => '0,0,0' ), array( 'text' => $jobFourXZ, 'left' => -450, 'top' => -870, 'fontSize' => '30px', 'fontColor' => '255,0,0' ) ); } if (isset($jobFiveName) && $whb['num'] >= 5){ array_push($textArr, array( 'text' => $jobFiveName, 'left' => 120, 'top' => -970, 'fontSize' => '40px', 'fontColor' => '0,0,0' ), array( 'text' => $jobFiveXZ, 'left' => -450, 'top' => -970, 'fontSize' => '30px', 'fontColor' => '255,0,0' ) ); } if (isset($jobSixName) && $whb['num'] == 6){ array_push($textArr, array( 'text' => $jobSixName, 'left' => 120, 'top' => -1070, 'fontSize' => '40px', 'fontColor' => '0,0,0' ), array( 'text' => $jobSixXZ, 'left' => -450, 'top' => -1070, 'fontSize' => '30px', 'fontColor' => '255,0,0' ) ); } $imageArr = array( array( 'url' => Url('wap', array('c' => 'company', 'a' => 'show', 'id' => $comId)), //二维码资源 'qrcode' => array('c'=>'company','id'=>$comId), 'stream' => 0, 'left' => -150, 'top' => -240, 'right' => 0, 'bottom' => 0, 'width' => 160, 'height' => 160, 'opacity' => 100 ), array( 'url' => $com['logo_n'], // 企业LOGO 'stream' => 0, 'left' => 120, 'top' => -270, 'right' => 0, 'bottom' => 0, 'width' => 120, 'height' => 120, 'opacity' => 100 ) ); if($this->config['sy_haibao_web_type'] == 1){ // 自定义网站名称 $textArr[] = array( 'text' => $this->config['sy_haibao_web_name'], 'left' => 66, 'top' => 140, 'fontSize' => '60px', //字号 'fontColor' => '255,255,255' //字体颜色 ); } elseif ($this->config['sy_haibao_web_type'] == 2){ $web_logo = $this->config['sy_ossurl'] . '/' . $this->config['sy_haibao_web_logo']; $imgsize = @getimagesize($web_logo); if($imgsize){ // 图片宽高获取成功 $imageArr[] = array( 'url' => $web_logo, 'stream' => 0, 'left' => 66, 'top' => 80, // 'right' => 0, // 'bottom' => 0, 'width' => $imgsize[0], 'height' => $imgsize[1], 'opacity' => 100, 'c_opacity' => 1, ); } } $imgConfig = array( 'text' => $textArr, 'image' => $imageArr, 'background' => $imgFile //背景图 ); echo $this->createPoster($imgConfig); } } } private function getComInfo($where, $data) { require_once('company.model.php'); $ComM = new company_model($this->db, $this->def); return $ComM->getInfo($where, $data); } function mbStrSplit($string, $len = 1) { $start = 0; $strlen = mb_strlen($string); while ($strlen) { $array[] = mb_substr($string, $start, $len, "utf8"); $string = mb_substr($string, $len, $strlen, "utf8"); $strlen = mb_strlen($string); } return $array; } function getLogoHb($data = array()) { $hb = $data['hb']; $bg = DATA_PATH.'upload/whb/logo/'.$hb.'.png'; $str = $this->mbStrSplit($data['text']); if ($str[3]){ $textArr = array( array( 'text' => $str[0], 'left' => 10, 'top' => 90, 'fontSize' => '60px', //字号 'fontColor' => '255,255,255' //字体颜色 ), array( 'text' => $str[1], 'left' => 110, 'top' => 90, 'fontSize' => '60px', //字号 'fontColor' => '255,255,255' //字体颜色 ), array( 'text' => $str[2], 'left' => 10, 'top' => 170, 'fontSize' => '60px', //字号 'fontColor' => '255,255,255' //字体颜色 ), array( 'text' => $str[3], 'left' => 110, 'top' => 170, 'fontSize' => '60px', //字号 'fontColor' => '255,255,255' //字体颜色 ) ); }else if ($str[2]){ $textArr = array( array( 'text' => $str[0], 'left' => 10, 'top' => 110, 'fontSize' => '40px', //字号 'fontColor' => '255,255,255' //字体颜色 ), array( 'text' => $str[1], 'left' => 70, 'top' => 110, 'fontSize' => '40px', //字号 'fontColor' => '255,255,255' //字体颜色 ), array( 'text' => $str[2], 'left' => 130, 'top' => 110, 'fontSize' => '40px', //字号 'fontColor' => '255,255,255' //字体颜色 ) ); } else { $textArr = array( array( 'text' => $str[0], 'left' => 20, 'top' => 120, 'fontSize' => '60px', //字号 'fontColor' => '255,255,255' //字体颜色 ), array( 'text' => $str[1], 'left' => 105, 'top' => 120, 'fontSize' => '60px', //字号 'fontColor' => '255,255,255' //字体颜色 ) ); } $imgConfig = array( 'text' => $textArr, 'background' => $bg //背景图 ); if (isset($data['out']) && $data['out'] == 1){ $imgConfig['out'] = 1; } echo $this->createPoster($imgConfig); } function createPoster($config = array()) { $imageDefault = array( 'left' => 0, 'top' => 0, 'right' => 0, 'bottom' => 0, 'width' => 100, 'height' => 100, 'opacity' => 100 ); $textDefault = array( 'text' => '', 'left' => 0, 'top' => 0, 'fontSize' => 32, // 字号 'fontColor' => '255,255,255', // 字体颜色 'fontPath' => TPL_PATH . 'wap/hb_job/OPPOSans-M.ttf', // 字体路径 'angle' => 0, ); $background = $config['background'];//海报最底层得背景 if (stripos($background, 'http') !== false) { //背景方法 $backgroundInfo = curlGet($background); $background = imagecreatefromstring($backgroundInfo); } else { //背景方法 $backgroundInfo = getimagesize($background); $backgroundFun = 'imagecreatefrom'.image_type_to_extension($backgroundInfo[2], false); $background = $backgroundFun($background); } $backgroundWidth = imagesx($background); //背景宽度 $backgroundHeight = imagesy($background); //背景高度 $imageRes = imageCreatetruecolor($backgroundWidth, $backgroundHeight); $color = imagecolorallocate($imageRes, 255, 255, 255); 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); if (isset($val['qrcode'])){ // 二维码图单独处理 if ($this->config['sy_ewm_type'] == 'weixin' || $this->config['sy_ewm_type'] == 'xcx'){ // 场景码 $qrcode = $val['qrcode']; // 只有一个二维码,暂时先在这里申明model require_once('weixin.model.php'); $WxM = new weixin_model($this->db, $this->def); $val['url'] = $WxM->pubWxQrcode($qrcode['c'],$qrcode['id'],$this->config['sy_ewm_type']); }else{ // 默认二维码,需特殊处理,直接在本model里生成,不调用url $resWidth = $val['width']; $resHeight = $val['height']; //建立画板 $canvas = $this->qrcode($val['url'], $val['width'], $val['height']); $val['url'] = ''; } } if (!empty($val['url'])){ // 判断一下url,默认二维码不需要走这里 if ($val['stream']) { $info = getimagesizefromstring($val['url']); $function = 'imagecreatefromstring'; $res = $function($val['url']); } else if (stripos($val['url'], 'http') !== false) { $urlInfo = curlGet($val['url']); if (!empty($urlInfo)) { $info = getimagesizefromstring($urlInfo); } $function = 'imagecreatefromstring'; $res = $function($urlInfo); } else { $info = getimagesize($val['url']); if ($info) { $function = 'imagecreatefrom'.image_type_to_extension($info[2], false); $res = $function($val['url']); } } // 要判断一下,防止图片不存在,导致报错 if (!empty($info)) { $resWidth = $info[0]; $resHeight = $info[1]; //建立画板 ,缩放图片至指定尺寸 $canvas = imagecreatetruecolor($val['width'], $val['height']); } } if (isset($canvas)){ if(!empty($val['c_opacity'])){ $mycolor = imagecolorallocatealpha($canvas, 255, 255, 255, 127); // 为一幅图像分配颜色和透明度。 imagecolortransparent($canvas,$mycolor); //3.设置透明色 imagefill($canvas,0,0,$mycolor);//4.填充透明色 }else{ 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']); } } if (!$config['out']){ //在浏览器上显示 header("Content-type: image/png"); imagejpeg($imageRes); imagedestroy($imageRes); }else{ if (isset($this->config['sy_oss']) && $this->config['sy_oss'] == 1) { ob_start(); imagejpeg($imageRes); $img = ob_get_contents(); ob_end_clean(); $base64 = base64_encode($img); require_once('upload.model.php'); $uploadM = new upload_model($this->db, $this->def); $upArr = array( 'base' => $base64, 'dir' => 'company', 'type' => 'logo', 'watermark' => 0 ); $return = $uploadM->newUpload($upArr); return $return['picurl']; }else{ $dir = 'data/upload/company/'.date("Ymd"); $dirname = APP_PATH.$dir; if(!file_exists($dirname)){ mkdir($dirname); } $imgName = '/'.time().'.png'; $filename = $dirname.$imgName; imagepng($imageRes, $filename); return './'.$dir.$imgName; } } } // 海报专用二维码生成函数 private function qrcode($inputContent, $printW = 0, $printhH = 0, $pixelPerPoint = 4, $outerFrame = 4, $back_color = 0xFFFFFF, $fore_color = 0x000000) { require_once LIB_PATH."phpqrcode.php"; $enc = QRencode::factory(QR_ECLEVEL_L, 3, 4, $back_color, $fore_color); ob_start(); $frame = $enc->encode($inputContent); ob_end_clean(); $h = count($frame); $w = strlen($frame[0]); $imgW = $w + 2*$outerFrame; $imgH = $h + 2*$outerFrame; $base_image =ImageCreate($imgW, $imgH); // convert a hexadecimal color code into decimal format (red = 255 0 0, green = 0 255 0, blue = 0 0 255) $r1 = round((($fore_color & 0xFF0000) >> 16), 5); $g1 = round((($fore_color & 0x00FF00) >> 8), 5); $b1 = round(($fore_color & 0x0000FF), 5); // convert a hexadecimal color code into decimal format (red = 255 0 0, green = 0 255 0, blue = 0 0 255) $r2 = round((($back_color & 0xFF0000) >> 16), 5); $g2 = round((($back_color & 0x00FF00) >> 8), 5); $b2 = round(($back_color & 0x0000FF), 5); $col[0] = ImageColorAllocate($base_image, $r2, $g2, $b2); $col[1] = ImageColorAllocate($base_image, $r1, $g1, $b1); imagefill($base_image, 0, 0, $col[0]); for($y=0; $y<$h; $y++) { for($x=0; $x<$w; $x++) { if ($frame[$y][$x] == '1') { ImageSetPixel($base_image,$x+$outerFrame,$y+$outerFrame,$col[1]); } } } $target_image =ImageCreate($printW, $printW); ImageCopyResized($target_image, $base_image, 0, 0, 0, 0, $printW, $printhH, $imgW, $imgH); ImageDestroy($base_image); return $target_image; } } ?>