/**
* 生成二维码
*
* @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. JavaEE开发基础

    1 JavaEE简介 Java平台有三个版本,分别是JavaSE(Java Platform, Standard Edition),JavaEE(Java Platform, Enterprise E ...

  2. SQL Server 2012新增和改动DMV

    SQL Server 2012新增和改动DMV  系统视图 说明 sys.dm_exec_query_stats (Transact-SQL) 添加了四列,以帮助排除长时间运行的查询所存在的问题. 可 ...

  3. nodejs安装和环境部署

    windows 下: 1. 下载windows平台nodejs环境安装包,百度一下nodejs官网,找到DOWNLOADS点击,找到Windows Installer 如果为64位电脑可以选择64位版 ...

  4. php Zend Opcache,xcache,eAccelerator缓存优化详解(具体根据个人需要选择其一即可,功能都一样切勿重复选择)

    载入 XCache 模块 引用 ;; 安装成 zend extension (推荐), 路径一般是 "$extension_dir/xcache.so" zend_extensio ...

  5. Yii2 脚本手动执行可以,计划任务执行不成功

    用Yii2的console写了个脚本,在命令行执行都OK. 放到cron里面也按时去执行了,但就是执行的效果不对,console脚本执行结果不对. 查看之后的是由于yii脚本的php路径问题(跟目录下 ...

  6. 按照TYPE的文件导入导出功能

    /** * 导入文件Action;*/private File excelFile;// 保存原始文件名private String excelFileFileName;// 保存原始文件名priva ...

  7. shell脚本批量收集linux服务器的硬件信息快速实现

    安装ansible批量管理系统.(没有的话,ssh远程命令循环也可以) 在常用的数据库里面新建一张表,用你要收集的信息作为列名,提供可以用shell插入.

  8. 04.ubuntu下kvm 命令行安装64位ubuntu报"Couldn't find hvm kernel for Ubuntu tree."的问题

    1.安装ubuntu时使用的virt-install的配置: virt-install \ --name test4 \ --ram 1024 \ --disk path=/data/01_ubunt ...

  9. java 线程池——异步任务

    一.简单粗暴的线程 最原始的方式,当我们要并行的或者异步的执行一个任务的时候,我们会直接使用启动一个线程的方式,如下面所示: new Thread(new Runnable() { @Override ...

  10. 烂泥:学习centos之快速搭建LNMP环境

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 以前在centos下安装软件都是喜欢源码安装,不过昨天因为一个事情需要一个centos 下的LNMP环境.反倒不会搞了,今天特意记录下,以备后续使用. 一 ...