/**
* 生成二维码
*
* @param int $id
* @param string $file
* @param boolean $is_download
*/
public function qrcode($id, $file = '', $is_download = false)
{
//跳转地址
$url = 'http://local.xxx.net/fgdgdgf';
// 纠错级别:L、M、Q、H
$errorCorrectionLevel = 'L';
// 点的大小:1到10
$matrixPointSize = 10;
$qrcode = QRcode::png($url, false, $errorCorrectionLevel, $matrixPointSize, 2); //获取会议室信息和二维码code
$room=$this->_meetingRoomServ->get($id); //创建背景,并将二维码贴到左边
$bk = imagecreate(750, 470);
imagecolorallocate($bk, 255, 255, 255);
imagecopy($bk, $qrcode, 0, 0, 0, 0, 430, 430); //设置字体颜色
$black = imagecolorallocate($bk, 0, 0, 0); // 字体
$font = APP_PATH . "../www/YaHei.ttf";
// 写入文字
$arr = $this->mbstringtoarray($room['mr_address'],"utf-8");
$mr_address=$this->_getstr($arr);
// 会议室地点
$arr_name = $this->mbstringtoarray($room['mr_name'],"utf-8");
$mr_name=$this->_getstr($arr_name);
// 区域
$arr_mr_device = $this->mbstringtoarray($room['mr_device'],"utf-8");
$mr_device=$this->_getstr($arr_mr_device,18);
imagettftext($bk, 20, 0, 410, 40, $black, $font, $mr_name);
imagettftext($bk, 12, 0, 410, 70, $black, $font, '会议室地点:' . $mr_address);
imagettftext($bk, 12, 0, 410, 90, $black, $font, '会议室区域:' .$room['mr_area']);
imagettftext($bk, 12, 0, 410, 150, $black, $font, '预订时间:' . $room['mr_timestart'] . '-' . $room['mr_timeend']);
imagettftext($bk, 12, 0, 410, 190, $black, $font, '容纳人数:' . $room['mr_galleryful']);
imagettftext($bk, 12, 0, 410, 240, $black, $font, '可用设备:' .$mr_device); if ($file) {
//生成文件
imagepng($bk, $file);
} else if ($is_download) {
//直接下载
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length:6000");
Header("Content-Disposition: attachment; filename={$room['mr_address']}-{$room['mr_name']}.png");
imagepng($bk);
} else {
//直接输出图片
header('Content-Type: image/png');
imagepng($bk); }
} /**
* 将字符拆份成段
* @param $str
* @param $charset
* @return array
*/
protected function mbstringtoarray($str,$charset) {
$array=array();
$strlen=mb_strlen($str);
while($strlen){
$array[]=mb_substr($str,0,1,$charset);
$str=mb_substr($str,1,$strlen,$charset);
$strlen=mb_strlen($str);
}
return $array;
}
/**
* 拼接超出字符串
* @param $arr
* @return string
*/
protected function _getstr($arr,$leng=10){
$temp=''; for($i=0;$i<count($arr);$i++)
{
if($i%$leng==0&&$i>0)
{
$temp=$temp."\n";
}
$temp=$temp.$arr[$i];
}
return $temp;
} 引入qrcode文件就可以生成如下的二维码图片

注意:$font这里字体文件路径要使用绝对路径,不能使用相对路径,否则右边的字会出不来。 

qrcode 生成验证码带文字的更多相关文章

  1. python生成验证码,文字转换为图片-乾颐堂

    在58或者赶集等一些网站上经常看到手机号是图片格式,或者一些网站的验证码.这些都是动态生成的,今天我们来看一下如何用python把文字生成图片.其实今天主要借助pygame的图像渲染模块,这样比较简单 ...

  2. asp.net生成缩略图、文字图片水印

    /// <summary> /// 会产生graphics异常的PixelFormat /// </summary> private static PixelFormat[] ...

  3. C#Qrcode生成二维码支持中文,带图片,带文字

    C#Qrcode生成二维码支持中文带图片的操作请看二楼的帖子,当然开始需要下载一下C#Qrcode的源码 下载地址 : http://www.codeproject.com/Articles/2057 ...

  4. phpqrcode生成带logo的二维码图片及带文字的二维码图片

    <?php require_once "./phpqrcode/phpqrcode.php"; /** * 这样就可以生成二维码了,实际上在png这个方法里还有几个参数需要使 ...

  5. TP框架中生成带背景带文字的二维码

    首先下载一个phpqrcode的包放到/vendor目录下 链接:https://pan.baidu.com/s/18jV9DypYB_PHDhD6C0iedQ 提取码:qxuo 如果只是单纯生成二维 ...

  6. Django 生成验证码或二维码 pillow模块

    一.安装PIL PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了.PIL功能非常强大,API也非常简单易用.   PIL模块只支持到Python 2 ...

  7. C#生成验证码

    生成验证码的类: using System; using System.Collections.Generic; using System.Drawing; using System.Text; na ...

  8. python生成验证码脚本

    最近每天都用python写一个小的脚本,练习使用python语法. 验证码的生成: 这里使用了python的图像处理库PIL,安装PIL的过程中出了一个小麻烦,就使用Pillow-win32的一个文件 ...

  9. servlet生成验证码

    1.因为朋友们都说现在很少用java自带的图形用户接口,所以小白的我就没去看awt和swing组件,因为要抓紧时间学习后面的,完了出去找工作,等以后再回来了解awt和swing:所以制作验证码的代码是 ...

随机推荐

  1. iOS 10对隐私权限的管理(必须要改否则会crash)

    比如访问的摄像头.麦克风等硬件,都需要提前请求应用权限.允许后才可以使用,或者现在要提前声明,虽然以往要求不严格.比如在iOS10中访问通讯录时,强制必须在Info.plist中加入NSContact ...

  2. java实现敏感词过滤(DFA算法)

    小Alan在最近的开发中遇到了敏感词过滤,便去网上查阅了很多敏感词过滤的资料,在这里也和大家分享一下自己的理解. 敏感词过滤应该是不用给大家过多的解释吧?讲白了就是你在项目中输入某些字(比如输入xxo ...

  3. Keepalived+LVS+nginx双机热备

    Keepalived简介 什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了, 也就是所谓的高可用或热备,用来防止单点故障的发生. Keepalived采 ...

  4. 消息服务MNS和消息队列ONS产品对比

    消息服务MNS和消息队列ONS产品对比 MNS已经进过严格测试,已达到商业化的稳定性要求,其主要特点和适用场景 1.数据高可靠(10个9),对于数据可靠性敏感(要求消息数据不丢)的应用场景建议选择. ...

  5. PHP求职宝典系列——PHP Web 编程篇

    PHP Web 编程篇 form表单 1.简述 POST 和 GET 传输的最大容量分别是多少? GET 方法提交的表单数据被附加到 URL 上,并作为URL 的一部分发送到服务器端. URL 的长度 ...

  6. java程序设计之循环链表

    照例来说点废话,愿自己生一颗温柔细腻的心,这样女朋友也许一个眼神,一个微笑,我就知道如何做,可惜内心与外表一样粗糙,这一生有幸认识她,愿天下有情人终成眷属. 循环链表,顾名思义循环就好了,所以建一个线 ...

  7. 前端之float的几种清除浮动方式

    前端之float的几种清除浮动方式 本节内容 1.float清除方式1 2.float清除方式2 3.float清除方式3 4.float清除方式4 1.float清除方式1 <!DOCTYPE ...

  8. docker学习(4) 一些常用操作

    继续docker的学习之旅,今天练习一些常用的命令: 一.镜像相关 1.1 列出本机所有镜像 docker images 后面的操作,都以ubuntu做为练习的目标. 另外:如果某些镜像文件不想要了, ...

  9. [LeetCode] Number of Connected Components in an Undirected Graph 无向图中的连通区域的个数

    Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is a pair of nodes), ...

  10. grouping sets从属子句的运用

    grouping sets主要是用来合并多个分组的结果. 对于员工目标业绩表'businessTarget': employeeId targetDate idealDistAmount 如果需要分别 ...