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失真相关推荐

  1. Py之qrcode:调用python的qrcode库两种方式生成二维码、带logo的二维码

    Py之qrcode:调用python的qrcode库两种方式生成二维码.带logo的二维码 目录 python编程实现生成二维码 1.第一种方式-纯文本 2.第二种方式-带logo

  2. 二维码相关---java生成二维码名片,并且自动保存到手机通讯录中...

    二维码相关---java生成二维码名片,并且自动保存到手机通讯录中... 技术qq交流群:JavaDream:251572072 1.首先介绍一个api.   Zxing是Google提供的关于条码 ...

  3. 二维码相关---java生成二维码名片,而且自己主动保存到手机通讯录中...

    版权声明:本文为博主原创文章,未经博主credreamer 同意不得转载 违者追究法律责任. https://blog.csdn.net/lidew521/article/details/244418 ...

  4. (转)ZXing生成二维码和带logo的二维码,模仿微信生成二维码效果

    场景:移动支付需要对二维码的生成与部署有所了解,掌握目前主流的二维码生成技术. 1 ZXing 生成二维码 首先说下,QRCode是日本人开发的,ZXing是google开发,barcode4j也是老 ...

  5. TP6生成二维码,带logo和不带logo

    composer require dh2y/think-qrcode 生成不带logo的二维码,$code->png()里填写需要生成二维码的链接地址,记得引入 use dh2y\qrcode\ ...

  6. ZXing生成二维码和带logo的二维码,模仿微信生成二维码效果

    首先说下,QRCode是日本人开发的,ZXing是google开发,barcode4j也是老美开发的,barcode4j对一维条形码处理的很好,而且支持的格式很多,当然也可以对二维码进行处理,效果个人 ...

  7. qrcode 生成二维码,带logo 带文字描述

    qrcode 生成二维码 1.引入 pom.xml 2. ResourceRenderer 3. QRCodeUtil 4. QRCodeController 5. HTML 6. 测试 1.引入 p ...

  8. Java 生成二维码(带logo 文字)

    1. 引入包 <!-- 二维码生成--><dependency><groupId>com.google.zxing</groupId><artif ...

  9. Asp.net 获取泛微OA个人信息并生成二维码名片vCard

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.二维码名片vCard是什么? 二.使用步骤 1.引入库 2.读取OA数据 3.生成名片 4.名片效果 前言 记录学 ...

  10. java 简单快速的生成二维码(带图片)

    **使用java+zxing 简单快速的生成二维码.** 效果图: 首先需要引入两个jar文件: <dependency><groupId>commons-codec</ ...

最新文章

  1. To-do-List
  2. 如何备份linux系统(转)
  3. Docker最全教程之使用Docker搭建Java开发环境
  4. 远程桌面提示RPC不可用
  5. 27. 搭建Git服务器
  6. sap 思维导图_思维导图模板,思维导图简单漂亮画法
  7. dos命令 启动项目
  8. Java实现读取txt文件数据并导入数据库
  9. 精通CSS.DIV网页样式与布局(二)—— 段落
  10. 走进Linux 操作系统(之一)
  11. 关于公共IP地址(公网ip):您需要知道的一切
  12. BZOJ3894 文理分科
  13. 【深度学习TPU+Keras+Tensorflow+EfficientNetB7】kaggle竞赛 使用TPU对104种花朵进行分类 第十八次尝试 99.9%准确率
  14. 揭秘客服跳槽率高的原因
  15. 用户决定Windows的CPU占用率
  16. DAO:绝无仅有但非唾手可得的实现公平协调的机会
  17. CentOS7 Hadoop 2.7.3 Hive 2.1.1
  18. 清华大学成立人工智能班 中国高校AI布局大盘点!
  19. Shopee运费怎么算的?虾皮物流运费表
  20. 谷歌浏览器打开网站发现连接不是私密连接

热门文章

  1. 思科模拟器连通服务器网页,思科模拟器主机访问服务器
  2. 使用Windows系统的几个好的习惯
  3. PMP 考点 第七章 项目成本管理
  4. flash对联广告代码: 两边显示 不移动 可关闭
  5. 富士通Fujitsu DPK8510E 打印机驱动
  6. 传承百年经典的瑞吉管家静待您的优雅旅程再次开启
  7. Openwrt下ipk包的安装、卸载与更新
  8. QQ快速登录协议分析
  9. MicroDicom viewer(Dicom格式看图软件)v2.9.2官方版
  10. VC6.0中使用64位整型