PHP生成二维码名片带LOGO并解决LOGO失真
PHP生成二维码名片带LOGO并解决LOGO失真
在过去,人们拿了名片,需要手动把上面的信息存进手机。如今,如果你还在使用这样的名片,这样繁琐的录入方法,那可就逊毙了。赶紧把你过去的名片丢尽垃圾桶,换上时尚潮流的二维码名片吧。二维码名片把传统名片和二维码结合在一起,它不仅包含了传统的联系方式(如手机、邮箱、地址等),还加入了二维码信息。它可以让你一键保存个人联系方式。
二维码名片为vCard模式。vCard(或称做Versitcard)最早是由Versit联盟于1995年提出的,当时联盟成员包括苹果公司,AT&T科技(后来的朗讯),IBM及西门子。在1996年十二月,格式的拥有权移至因特网邮件联盟(IMC),此联盟是由一些关注因特网电子邮件的公司所组成。
vCard标准的2.1版被电子邮件客户端广泛支持。3.0版是一个包含在RFC 2425和RFC 2426中的IETF标准跟踪提案。vCard的常用文件扩展名是.vcf。不同的程序对vCard标准实现亦不同。Mac OS X中的Address Book允许把所有联系人导出到一个vcf文件,而Microsoft Outlook只能每人一个文件。Linux中KDE的Kontact允许每个文件导入或导出一人或多人。
标准格式:
BEGIN:VCARD
VERSION:3.0
FN:姓名
NICKNAME:昵称
ORG:公司或部门
TITLE:职位
TEL;WORK;VOICE:工作电话
TEL;HOME;VOICE:家庭电话
TEL;PAGER;VOICE:电话
TEL;CELL;VOICE:移动电话
ADR;WORK:工作详细地址;辽宁;大连;000000;中国
ADR;HOME:家庭详细地址;辽宁;大连;000000;中国
ADR;POSTAL;PARCEL:详细地址;辽宁;大连;000000;中国
URL:网址
EMAIL;PREF;INTERNET:邮箱地址
NOTE;ENCODING=QUOTED-PRINTABLE:备注
END:VCARD
使用QRCODE生成二维码:
1.引入QRCODE类库
2.封装数据,格式查看标准格式
3.生成二维码:QRcode::png();
封装一段PHP代码:
<?php
include_once 'phpqrcode.php';
// 引入phpqrcode.php文件
// 调用方式:
// $vCard = new vCard();
// $vCard->setFn('孟');
// $vCard->setNickname('Song');
// 输出文本
// $vCard->getvCard('text');
// 输入文本为:BEGIN:VCARD VERSION:3.0 FN:孟 NICKNAME:Song END:VCARD
// 输出二维码
// $vCard->getvCard();
class vCard {public $_version = '3.0'; //版本public $_begin = 'VCARD'; //数据格式开始,默认不需要更改public $_fn = ''; //姓名public $_nickname = ''; //昵称public $_org = ''; //公司或部门public $_title = ''; //职位public $_workTel = ''; //工作电话public $_homeTel = ''; //家庭电话public $_pagereTel = ''; //电话public $_cellTel = ''; //移动电话public $_workAdr = ''; //工作地址public $_homeAdr = ''; //家庭地址public $_parcelAdr = ''; //详细地址public $_url = ''; //个人首页public $_email = ''; //邮件地址public $_note = ''; //备注public $_end = 'VCARD'; //数据格式结束,默认不需要更改public $_qrcode = ''; //二维码存放路径带文件名,例:qrcode.pngpublic $_logo = ''; //二维码中心图片function setQrcode($value = '') {$this->_qrcode = $value;return $this->_qrcode;}function setLogo($value = '') {$this->_logo = $value;return $this->_logo;}function setVersion($value = '') {$this->_version = $value;return $this->_version;}function setBegin($value = '') {$this->_begin = $value;return $this->_begin;}function setFn($value = '') {$this->_fn = $value;return $this->_fn;}function setNickname($value = '') {$this->_nickname = $value;return $this->_nickname;}function setOrg($value = '') {$this->_org = $value;return $this->_org;}function setTitle($value = '') {$this->_title = $value;return $this->_title;}function setWorkTel($value = '') {$this->_workTel = $value;return $this->_workTel;}function setHomeTel($value = '') {$this->_homeTel = $value;return $this->_homeTel;}function setPagereTel($value = '') {$this->_pagereTel = $value;return $this->_pagereTel;}function setCellTel($value = '') {$this->_cellTel = $value;return $this->_cellTel;}function setWorkAdr($value = '') {$this->_workAdr = $value;return $this->_workAdr;}function setHomeAdr($value = '') {$this->_homeAdr = $value;return $this->_homeAdr;}function setParcelAdr($value = '') {$this->_parcelAdr = $value;return $this->_parcelAdr;}function setUrl($value = '') {$this->_url = $value;return $this->_url;}function setEmail($value = '') {$this->_email = $value;return $this->_email;}function setNote($value = '') {$this->_note = $value;return $this->_note;}function setEnd($value = '') {$this->_end = $value;return $this->_end;}function getvCard($type = 'card') {$vCard = '';if($this->_begin) {$vCard .= 'BEGIN:' . $this->_begin . PHP_EOL;}if($this->_version) {$vCard .= 'VERSION:' . $this->_version . PHP_EOL;}if($this->_fn) {$vCard .= 'FN:' . $this->_fn . PHP_EOL;}if($this->_nickname) {$vCard .= 'NICKNAME:' . $this->_nickname . PHP_EOL;}if($this->_org) {$vCard .= 'ORG:' . $this->_org . PHP_EOL;}if($this->_title) {$vCard .= 'TITLE:' . $this->_title . PHP_EOL;}if($this->_workTel) {$vCard .= 'TEL;WORK;VOICE:' . $this->_workTel . PHP_EOL;}if($this->_homeTel) {$vCard .= 'TEL;HOME;VOICE:' . $this->_homeTel . PHP_EOL;}if($this->_pagereTel) {$vCard .= 'TEL;PAGER;VOICE:' . $this->_pagereTel . PHP_EOL;}if($this->_cellTel) {$vCard .= 'TEL;CELL;VOICE:' . $this->_cellTel . PHP_EOL;}if($this->_workAdr) {$vCard .= 'ADR;WORK:' . $this->_workAdr . PHP_EOL;}if($this->_homeAdr) {$vCard .= 'ADR;HOME:' . $this->_homeAdr . PHP_EOL;}if($this->_parcelAdr) {$vCard .= 'ADR;PARCEL:' . $this->_parcelAdr . PHP_EOL;}if($this->_url) {$vCard .= 'URL:' . $this->_url . PHP_EOL;}if($this->_email) {$vCard .= 'EMAIL;PREF;INTERNET:' . $this->_email . PHP_EOL;}if($this->_note) {$vCard .= 'NOTE;ENCODING=QUOTED-PRINTABLE:' . $this->_note . PHP_EOL;}if($this->_end) {$vCard .= 'END:' . $this->_end;}if($type != 'card') {echo $vCard;} else {$this->getQrcode($vCard);}}public function getQrcode($vCard = '') {if(!$vCard) {return false;}if(!$this->_qrcode) {return false;}$errorCorrectionLevel = 3;//容错级别 $matrixPointSize = 9;//生成图片大小 生成大概400*400的二维码QRcode::png($vCard, $this->_qrcode, $errorCorrectionLevel, $matrixPointSize, 2);if(!$this->_logo) {return false;}$qr = imagecreatefromstring(file_get_contents($this->_qrcode));$logo = imagecreatefromstring(file_get_contents($this->_logo));$qr_width = imagesx($qr);$qr_height = imagesy($qr);$logo_width = imagesx($logo);$logo_height = imagesy($logo);if($logo_height > $logo_width) {$logo_height = $logo_width;}$logo_qr_width = $qr_width / 4;$scale = $logo_width / $logo_qr_width;$logo_qr_height = $logo_height / $scale;$from_width = ($qr_width - $logo_qr_width) / 2;$test = imagecopyresampled($qr, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);imagepng($qr, $this->_qrcode);imagedestroy($qr);}
}
logo失真是因为QRimage类下的方法image下由两处地方生成图片都用imagecreate,将其改为imagecreatetruecolor,这样就会生成不失真logo的二维码图片咯。
PHP生成二维码名片带LOGO并解决LOGO失真相关推荐
- Py之qrcode:调用python的qrcode库两种方式生成二维码、带logo的二维码
Py之qrcode:调用python的qrcode库两种方式生成二维码.带logo的二维码 目录 python编程实现生成二维码 1.第一种方式-纯文本 2.第二种方式-带logo
- 二维码相关---java生成二维码名片,并且自动保存到手机通讯录中...
二维码相关---java生成二维码名片,并且自动保存到手机通讯录中... 技术qq交流群:JavaDream:251572072 1.首先介绍一个api. Zxing是Google提供的关于条码 ...
- 二维码相关---java生成二维码名片,而且自己主动保存到手机通讯录中...
版权声明:本文为博主原创文章,未经博主credreamer 同意不得转载 违者追究法律责任. https://blog.csdn.net/lidew521/article/details/244418 ...
- (转)ZXing生成二维码和带logo的二维码,模仿微信生成二维码效果
场景:移动支付需要对二维码的生成与部署有所了解,掌握目前主流的二维码生成技术. 1 ZXing 生成二维码 首先说下,QRCode是日本人开发的,ZXing是google开发,barcode4j也是老 ...
- TP6生成二维码,带logo和不带logo
composer require dh2y/think-qrcode 生成不带logo的二维码,$code->png()里填写需要生成二维码的链接地址,记得引入 use dh2y\qrcode\ ...
- ZXing生成二维码和带logo的二维码,模仿微信生成二维码效果
首先说下,QRCode是日本人开发的,ZXing是google开发,barcode4j也是老美开发的,barcode4j对一维条形码处理的很好,而且支持的格式很多,当然也可以对二维码进行处理,效果个人 ...
- qrcode 生成二维码,带logo 带文字描述
qrcode 生成二维码 1.引入 pom.xml 2. ResourceRenderer 3. QRCodeUtil 4. QRCodeController 5. HTML 6. 测试 1.引入 p ...
- Java 生成二维码(带logo 文字)
1. 引入包 <!-- 二维码生成--><dependency><groupId>com.google.zxing</groupId><artif ...
- Asp.net 获取泛微OA个人信息并生成二维码名片vCard
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.二维码名片vCard是什么? 二.使用步骤 1.引入库 2.读取OA数据 3.生成名片 4.名片效果 前言 记录学 ...
- java 简单快速的生成二维码(带图片)
**使用java+zxing 简单快速的生成二维码.** 效果图: 首先需要引入两个jar文件: <dependency><groupId>commons-codec</ ...
最新文章
- To-do-List
- 如何备份linux系统(转)
- Docker最全教程之使用Docker搭建Java开发环境
- 远程桌面提示RPC不可用
- 27. 搭建Git服务器
- sap 思维导图_思维导图模板,思维导图简单漂亮画法
- dos命令 启动项目
- Java实现读取txt文件数据并导入数据库
- 精通CSS.DIV网页样式与布局(二)—— 段落
- 走进Linux 操作系统(之一)
- 关于公共IP地址(公网ip):您需要知道的一切
- BZOJ3894 文理分科
- 【深度学习TPU+Keras+Tensorflow+EfficientNetB7】kaggle竞赛 使用TPU对104种花朵进行分类 第十八次尝试 99.9%准确率
- 揭秘客服跳槽率高的原因
- 用户决定Windows的CPU占用率
- DAO:绝无仅有但非唾手可得的实现公平协调的机会
- CentOS7 Hadoop 2.7.3 Hive 2.1.1
- 清华大学成立人工智能班 中国高校AI布局大盘点!
- Shopee运费怎么算的?虾皮物流运费表
- 谷歌浏览器打开网站发现连接不是私密连接