前期准备

1、利用phpqrcode生成二维码:

原理分析:

下载下来的类文件是一个压缩包,包含很多文件和演示程序,我们只需要里边的phpqrcode.php

这一个文件就可以生成二维码了,它是一个多个类的集合文件,我们需要用到里边的QRcode类png()方法:

public static function png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false)
{
$enc = QRencode::factory($level, $size, $margin);
return $enc->encodePNG($text, $outfile, $saveandprint=false);
}
/**
*
* 参数详解
* 第1个参数$text:二维码包含的内容,可以是链接、文字、json字符串等等;
* 第2个参数$outfile:默认为false,不生成文件,只将二维码图片返回输出;否则需要给出存放生成二维码图片的文件名及路径;
* 第3个参数$level:容错级别,默认为L。
* 可传递的值分别是L(QR_ECLEVEL_L,7%)、M(QR_ECLEVEL_M,15%)、Q(QR_ECLEVEL_Q,25%)、H(QR_ECLEVEL_H,30%)。
* 这个参数控制二维码容错率,不同的参数表示二维码可被覆盖的区域百分比,也就是被覆盖的区域还能识别
* 第4个参数$size:控制生成图片的大小,默认为4;
* 第5个参数$margin:控制生成二维码的空白区域大小;
* 第6个参数$saveandprint:保存二维码图片并显示出来,$outfile必须传递图片路径;
*
*/

  使用示例:

require_once("./phpqrcode.php");
function creatQrcode(){
//设置二维码的链接地址
$url = "http://www.baidu.com";
//设置二维码的容错级别
/*
* 容错级别:容错级别百分比越高,就越容易识别,容错级别:
* 按照效果排序依次是 H -> Q -> M -> L
*/
$errorCorrectionLevel = 'H';
//设置生成二维码图片的大小
$matrixPointSize = 7;
//设置生成二维码的图片名称(路径名称根据项目需求而定)
$filename = "test.png";
QRcode::png($url, $filename, $errorCorrectionLevel, $matrixPointSize, 1);
//以上已经生成了二维码了(同级目录下的test.png)
}
creatQrcode();

2、如果要在生成的二维码中间放置logo的话:

<?php
//引入phpqrcode类库
require_once("./phpqrcode.php");
function creatQrcode(){
//设置二维码的链接地址
$url = "http://www.baidu.com";
//设置二维码的容错级别
/*
* 容错级别:容错级别百分比越高,就越容易识别,容错级别:
* 按照效果排序依次是 H -> Q -> M -> L
*/
$errorCorrectionLevel = 'H';
//设置生成二维码图片的大小
$matrixPointSize = 7;
//设置生成二维码的图片名称
$filename = "test.png";
QRcode::png($url, $filename, $errorCorrectionLevel, $matrixPointSize, 1);
//以上已经生成了二维码了(同级目录下的test.png)
$logo = './img/logo.png';
$QR = $filename;
$QRlogo = './img/qrlogo.png';
if(file_exists($logo)){
// 函数:imagecreatefromstring():创建一块画布,并从字符串中的图像流新建一副图像
$QR = imagecreatefromstring(file_get_contents($QR)); //目标图象连接资源。
$logo = imagecreatefromstring(file_get_contents($logo)); //源图象连接资源。
// php函数:imagesx(resource image):获取图像宽度
// PHP函数:imagesy(resource image):获取图像高度
$QR_width = imagesx($QR);
$QR_height = imagesy($QR);
$logo_width = imagesx($logo);//logo图片宽度
$logo_height = imagesy($logo);//logo图片高度 $logo_qr_width = $QR_width / 5; //组合之后logo的宽度(占二维码的1/5)
$scale = $logo_width/$logo_qr_width; //logo的宽度缩放比(本身宽度/组合后的宽度)
$logo_qr_height = $logo_height/$scale; //组合之后logo的高度
$from_width = ($QR_width - $logo_qr_width) / 2; //组合之后logo左上角所在坐标点 //重新组合图片,并调整大小
/**
* 函数 imagecopyresampled():将一幅图像中的一块正方形区域拷贝到另一个图像中,平滑地插入像素值,因此,尤其是,减小了图像的大小而仍然保持了极大的清晰度。参数详解
*
* bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )
*
* dst_image 目标图象连接资源。
* src_image 源图象连接资源。
* dst_x 目标 X 坐标点。
* dst_y 目标 Y 坐标点。
* src_x 源的 X 坐标点。
* src_y 源的 Y 坐标点。
* dst_w 目标宽度。
* dst_h 目标高度。
* src_w 源图象的宽度。
* src_h 源图象的高度。
*/
imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,$logo_qr_height, $logo_width, $logo_height);
// PHP函数:imagepng ( resource image [, string filename] ):以 PNG 格式将图像输出到浏览器或文件
imagepng($QR,$QRlogo);
echo '<image src="'.$QRlogo.'"/>';
}
}
creatQrcode();

3、如果加了logo的二维码要放在一张海报上的话:

imagecopymerge函数制拼合(镶嵌,合并)图片 同样适合水印之类的

<?php
//引入phpqrcode类库
require_once("./phpqrcode.php");
function creatQrcode(){
//设置二维码的链接地址
$url = "http://www.baidu.com";
//设置二维码的容错级别
/*
* 容错级别:容错级别百分比越高,就越容易识别,容错级别:
* 按照效果排序依次是 H -> Q -> M -> L
*/
$errorCorrectionLevel = 'H';
//设置生成二维码图片的大小
$matrixPointSize = 7;
//设置生成二维码的图片名称
$filename = "test.png";
QRcode::png($url, $filename, $errorCorrectionLevel, $matrixPointSize, 1);
//以上已经生成了二维码了(同级目录下的test.png) //————————————————————————————————————————————————————————————————
//二维码上添加logo
$logo = './img/logo.png';
$QR = $filename;
$QRlogo = './img/qrlogo.png';
if(file_exists($logo)){
// 函数:imagecreatefromstring():创建一块画布,并从字符串中的图像流新建一副图像
$QR = imagecreatefromstring(file_get_contents($QR)); //目标图象连接资源。
$logo = imagecreatefromstring(file_get_contents($logo)); //源图象连接资源。
// php函数:imagesx(resource image):获取图像宽度
// PHP函数:imagesy(resource image):获取图像高度
$QR_width = imagesx($QR);
$QR_height = imagesy($QR);
$logo_width = imagesx($logo);//logo图片宽度
$logo_height = imagesy($logo);//logo图片高度 $logo_qr_width = $QR_width / 5; //组合之后logo的宽度(占二维码的1/5)
$scale = $logo_width/$logo_qr_width; //logo的宽度缩放比(本身宽度/组合后的宽度)
$logo_qr_height = $logo_height/$scale; //组合之后logo的高度
$from_width = ($QR_width - $logo_qr_width) / 2; //组合之后logo左上角所在坐标点 //重新组合图片,并调整大小
imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,$logo_qr_height, $logo_width, $logo_height);
// PHP函数:imagepng ( resource image [, string filename] ):以 PNG 格式将图像输出到浏览器或文件
imagepng($QR,$QRlogo); //——————————————————————————————————————————
// 加了logo的二维码放在海报之类的背景图上面 $dst_path = './img/xuexi.jpg'; //底图
$src_path = $QRlogo; //覆盖图,我们就继续用上面的那张图QRlogo //创建图片实例
$dst = imagecreatefromstring(file_get_contents($dst_path));
$src = imagecreatefromstring(file_get_contents($src_path));
//获取覆盖图的宽高
list($src_w, $src_h) = getimagesize($src_path);
/**
*
* PHP函数:imagecopymerge()/imagecopy()
*
* bool imagecopymerge ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h , int $pct )
* 将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。两图像将根据 pct 来决定合并程度,其值范围从 0 到 100。当 pct = 0 时,实际上什么也没做,当为 100 时对于调色板图像本函数和 imagecopy() 完全一样,它对真彩色图像实现了 alpha 透明。
*
*/
imagecopymerge($dst, $src, 20, 120, 0, 0, $src_w, $src_h, 100);
list($dst_w, $dst_h) = getimagesize($dst_path);
imagepng($dst,'./img/aaa.png');
imagedestroy($dst);
imagedestroy($src);
}
}
creatQrcode();

(注:很多参考网上现有的资料,如果有错误,欢迎留言指正!)

利用phpqrcode二维码生成类库和imagecopymerge函数制拼接图片的经验的更多相关文章

  1. 利用phpqrcode二维码生成类库合成带logo的二维码并且用合成的二维码生成海报(二)

    前期准备 引入phpqrcode类库(下载地址:https://download.csdn.net/download/weixin_37557729/11891240:支持彩色二维码的下载地址:htt ...

  2. jquery-qrcode客户端二维码生成类库扩展--融入自定义Logo图片

    年后换了部门,现在主要的职责就是在网上卖精油,似乎这个就是传说中的网络营销. 跟着公司的MM们也了解不了少关于网络营销的知识,间接的了解到马云和刘强东都是些怎样龌龊的人,尽管之前也这样认为. 淘宝就不 ...

  3. 使用PHP二维码生成类库PHP QR Code生成二维码

    <?php include 'phpqrcode.php'; $value = 'http://www.helloweba.com'; //二维码内容 $errorCorrectionLevel ...

  4. Thinkphp3.2+PHPQRCode 二维码生成示例

    下载phpqrcode 整合到Thinkphp框架 在“ThinkPHP\Library\Vendor\”下新建目录phpqrcode,将压缩包内容解压到该文件夹下. 下载地址:http://www. ...

  5. 【PHP】 PHPqrCode二维码类库使用方法

    1.首先去官网下载PHPqrCode库文件,只需要里面的phpqrcode.php文件,下载地址:http://phpqrcode.sourceforge.net 2.二维码生成实例代码: <? ...

  6. Winform窗体实现简单的二维码生成和保存

    二维码的生成需要用到二维码生成的类库,ThoughtWorks.QRCode.dll 步骤: 第一步:下载二维码生成类库,ThoughtWorks.QRCode.dll 第二步:新建winform项目 ...

  7. PHP二维码生成的方法(google APi,PHP类库,libqrencode等)

    原文地址: http://blog.csdn.net/liuxinmingcode/article/details/7910975 ================================== ...

  8. java利用Google Zxing实现 二维码生成与解析

    1.引入zxing 2.使用下面两个类:QRCodeUtil.java和BufferedImageLuminanceSource.java 3.新建单元测试类 复制下面测试代码即可. 1.pom文件中 ...

  9. PHP QR Code封装二维码生成教程

    今天搞了一下二维码封装在tp框架上运用. 找了下草料网, api接口要收费, 现在找到了两种方法来实现用PHP来实现创建二维码. 由于二维码生成,会使用到PHP的GD库, 我们要先在PHP.ini文件 ...

随机推荐

  1. 为什么不能用drop function add 去删除函数? 因为不能使用 mysql中的保留字!

    mysql中有很多的 保留字, 也叫关键字, 你在使用 数据库中的任何东西, 都最好是 避开这些关键字/保留字, 包括 数据库名, 表名, 字段名, 函数名, 存储过程名. 这些关键字包括: mysq ...

  2. win32 汇编学习(2):消息框

    这一次,我们将用汇编语言写一个 Windows 程序,程序运行时将弹出一个消息框并显示"你好,我的第一个Win32汇编程序". 理论知识 Windows 为编写应用程序提供了大量的 ...

  3. java 之 schema解析

    一,schema约束 *dtd语法:<ELEMENT 元素名 约束> *schema符合xml的语法,xml语句 **一个xml中可以有多个schema,多个schema使用名称空间区分( ...

  4. Tomcat和weblogic虚拟路径的配置

    背景:上传的图片和web应用不在同个路径里,例如web应用在D盘,上传图片1.jpg在E:\upload\img目录里,这时就需要配置虚拟路径后,才能显示图片. Tomcat和WebLogic的不同配 ...

  5. Kubenets 调试cronjob

    kubectl exec -ti dvm-dailyreport-debug-deployment-86c55496dc-2mzjz -n alpha /bin/bash # 进入namespace: ...

  6. Transaction

    SqlTransaction——事务详解 事务是将一系列操作作为一个单元执行,要么成功,要么失败,回滚到最初状态.在事务处理术语中,事务要么提交,要么中止.若要提交事务,所有参与者都必须保证对数据的任 ...

  7. FI CO 常用表

    FI CO 常用表     最近写FICO的报表写得有点多,许多Table记不住,用F1查找又有点费事,不如把表单写下来,以后用到,直接在这上面找得了. 1,账目表主数据  SKA1  SKB1  S ...

  8. 使用 jenkins 搭建CI/CD流水线 (MAC)

    如何搭建持续集成/持续交付平台?? 如何使用jenkins搭建持续交付流水线,以及和其他工具(如artifactory)集成?如何使用元数据,记录软件发布过程的构建信息,测试结果,并用rest Api ...

  9. 关于在mac安装安卓的模拟器的一些些那点事情~~~

    ook~~自己捣鼓了三天终于安装成功了~妹的~踩了太多的坑~整个人就不好了~ 为了节省大家的时间~所以今天我就将我安装的过程整体思路教给大家!有了思路安装起来就很好了!!!但是 注意的是,也许你会出现 ...

  10. 项目Alpha冲刺——代码规范、冲刺任务与计划

    作业要求 这个作业属于哪个课程 软件工程1916-W(福州大学) 这个作业要求在哪里 项目Alpha冲刺 团队名称 基于云的胜利冲锋队 项目名称 云评:高校学生成绩综合评估及可视化分析平台 这个作业的 ...