php背景图片上生成二维码,二维码上带logo 代码示例 (原)
依赖库文件 phpqrcode.php
(下载地址://www.jb51.net/codes/189897.html ;或者在官网下载:http://phpqrcode.sourceforge.net)
本地演示文件代码下载(装环境即可)
百度网盘链接:https://pan.baidu.com/s/1L4dExJIJhbjrNa-hBrrdzg 密码:dmvs
代码逻辑:
1.生成一张url相关的 二维码 QR
2.把log图片跟QR合并成一个带logo的二维码 last
3.把带logo的的二维码跟 活动图片合成为一张图 保存到本地或直接输出图片
<?php
/**
* 生成管理员分销二维码
* ============================================================================
* ============================================================================
* $Author: 戈丫汝 QQ:534208139
* 2018-11-9 17:20:08Z
*/
require_once("./phpqrcode/phpqrcode.php");
//参数 活动模板图片,二维码url,模板内二维码的位置 $mes = getActivityImg('./images/123.png','http://shop.izhiwo.com',258,273);
print_r($mes);die;
function getActivityImg($template,$url,$x,$y)
{
//二维码中间添加logo
$logo = './images/logo.png';
$QR = "base.png";
$last = "last.png";
$errorCorrectionLevel = 'Q'; //防错等级
$matrixPointSize = 3; //二维码大小 //生成二维码
//参数内容:二维码储存内容,生成存储,防错等级,二维码大小,白边大小
QRcode::png($url, $QR, $errorCorrectionLevel, $matrixPointSize, 1); //合并logo跟二维码
$QR = imagecreatefromstring(file_get_contents($QR));
$logo = imagecreatefromstring(file_get_contents($logo));
$QR_width = imagesx($QR); $logo_width = imagesx($logo);
$logo_height = imagesy($logo);
$logo_qr_width = $QR_width / 5;
$scale = $logo_width / $logo_qr_width;
$logo_qr_height = $logo_height / $scale;
$from_width = ($QR_width - $logo_qr_width) / 2;
imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
imagepng($QR,$last); // 生成带log的二维码图片 存储到last //合成带logo的二维码图片跟 模板图片
$path_1 = $template; //背景图
$path_2 = $last; //带logo的二维码图
$dst = imagecreatefromstring(file_get_contents($path_1));
$src = imagecreatefromstring(file_get_contents($path_2));
list($src_w, $src_h) = getimagesize($path_2);
imagecopymerge($dst, $src, $x, $y, 0, 0, $src_w, $src_h, 100);
list($dst_w, $dst_h, $dst_type) = getimagesize($path_1);
//第一种:图片输出到页面
/*switch ($dst_type) {
case 1://GIF
header('Content-Type: image/gif');
imagegif($dst);
break;
case 2://JPG
header('Content-Type: image/jpeg');
imagejpeg($dst);
break;
case 3://PNG
header('Content-Type: image/png');
imagepng($dst);
break;
default:
break;
}
imagedestroy($dst);
imagedestroy($src);*/ //第二种:输出到本地文件夹,返回生成图片的路径
$fileName= md5(rand(0,999));
$EchoPath='./images/'.$fileName.'.png';
imagepng($dst,$EchoPath);
imagedestroy($dst);
return $EchoPath;
}
时间:2019-03-31 新增代码 (需求:生成后的图片加文字)
以下代码放到输出图片代码前即可,其他不变,全部代码文字位置二维码位置都没有调试,需要的可以根据自己需求调试. END~~~
//打上文字
$font = 'simsun.ttc';
//字体
$black = imagecolorallocate($dst, 0x00, 0x00, 0x00);
//字体颜色
imagefttext($dst, 13, 0, 20, 20, $black, $font, " 快乐编程快乐编程快乐\n编程快乐编程快乐编程快乐编程快乐编程\n编程快乐编程快乐编程快乐编.");
//输出图片
list($dst_w, $dst_h, $dst_type) = getimagesize($path_1);
php背景图片上生成二维码,二维码上带logo 代码示例 (原)的更多相关文章
- 使用PHP生成二维码的两种方法(带logo图像)
一.利用Google API生成二维码 Google提供了较为完善的二维码生成接口,调用API接口很简单,以下是调用代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
- 只能在堆上生成的对象 VS. 只能在栈上生成的对象
1. 只能在堆上 即禁止在栈上生成.如何实现? 当对象建立在栈上面时,是由编译器分配内存空间的,调用构造函数来构造栈对象.如果类的析构函数是私有的,则编译器不会在栈空间上为类对象分配内存. 所以,只需 ...
- Python-气象-大气科学-可视化绘图系列(三)—— 地图上自动标注省会名称(demo调整中)(代码+示例)
本文为原创文章 本文链接:https://www.cnblogs.com/zhanling/p/12606990.html # -*- coding: utf-8 -*- ''' Author: He ...
- C#(winform)为button添加背景图片,并去掉各种边框
1.既然是添加背景图片 所以这里应该使用 Button.BackgroudImage = "" ;来设置图片 而不应该使用 Button.Image = "" ...
- 用c#每日更换“必应背景图片”为“桌面壁纸”
必应每天都会更换背景图片,都非常漂亮,有的时候还十分惊艳,同时还会根据每个地区的特色不同应用不同的图片. 下面用c#抓取必应每天的背景图片,并实现桌面壁纸的每天自动切换 实现思路 1.通过获取&quo ...
- C#(winform)为button添加背景图片
1.既然是添加背景图片 所以这里应该使用 Button.BackgroudImage = "" ;来设置图片 而不应该使用 Button.Image = "" ...
- CSS实现网页背景图片自适应全屏
一张清晰漂亮的背景图片能给网页加分不少,设计师也经常会给页面的背景使用大图,我们既不想图片因为不同分辨率图片变形,也不希望当在大屏的情况下,背景有一块露白,简而言之,就是实现能自适应屏幕大小又不会变形 ...
- 关于background-image设置背景图片
每天进步一小步,一年进步一大步. 本篇主要介绍背景图片设置,平铺,x y方向上的平铺,是否重复显示no repeat 显示的初始位置 background-image:url(images/inde ...
- CSS实现网页背景图片自适应全屏,自适应背景图片
一张清晰漂亮的背景图片能给网页加分不少,设计师也经常会给页面的背景使用大图,我们既不想图片因为不同分辨率图片变形,也不希望当在大屏的情况下,背景有一块露白,简而言之,就是实现能自适应屏幕大小又不会变形 ...
随机推荐
- React组件中的key
React组件中的key 一.key的作用 react中的key属性,它是一个特殊的属性,它是出现不是给开发者用的(例如你为一个组件设置key之后不能获取组件的这个key props),而是给reac ...
- RabbitMQ 内存控制 硬盘控制
RabbitMQ服务器在启动时以及abbitmqctl set_vm_memory_high_watermark fraction 执行时,会检查计算机的RAM总大小. 默认情况下下, 当 Rabbi ...
- Will vs Be Going To vs Present Continuous: Talk About the Future in English
https://www.youtube.com/watch?v=UISiuiPd_FY will 说话的当下决定的将来要做什么,in the moment be going to 有意图去做,但没有计 ...
- 解决pathForResource返回nil, 无法读取plist文件问题
有很多人在设置plist文件的时候, 会发现读取不了plist文件里面的内容, 返回值为nil, 下面我们来解决一下这个问题. 首先我们打开工程并且按照下面的步骤来设置: 设置好后, 我们来写一段代码 ...
- [troubleshoot][daily][redhat] 设备反复重启故障排查
一台服务器设备,反复重启,每天重启数次. 一: 原因分析及初步排异. 1. 硬件,内存主板,一一更换,甚至除了硬盘将整台机器都换掉了,依然重启. 2. 排除电源问题,换了电源线,换了插座,还是重启 ...
- mysql-5.7免安装版本设置
mysql-5.7.22 免安装版本设置(Windows7) 一.在Mysql官网下载Mysql-5.7.22的ZIP文件 下载链接为:https://dev.mysql.com/downloads ...
- Struts2验证框架_xml验证失败
测试Struts2验证框架-->XML验证 启动tomcat后网页登录失败 Employee-validation.xml文件头如下: <!DOCTYPE validators PUB ...
- yaml语言在线可视化翻译
yaml语言在线可视化翻译 https://editor.swagger.io/
- centos安装卸载Postgresql数据库PGSQL10
这几天ytkah正在测试Odoo,而Odoo12一定要PGSQL10否则安装数据库的时候会出错,所以就直接安装gpsql10.首先卸载旧版本postgresql yum remove postgres ...
- OC常用控件封装
#import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface CreateUI : NSObject ...