PHP 之生成名片二维码与vcard格式

发布时间 2023-06-03 09:47:43作者: 样子2018

一、vcard格式

BEGIN:VCARD
VERSION:3.0
FN:样子
TEL;CELL;VOICE:18333333333
TEL;WORK;VOICE:010-66600000
TEL;WORK;FAX:010-66600001
EMAIL;PREF;INTERNET:1@qq.com
URL:http://baidu.com
orG:网络工作室
ROLE:技术部
TITLE:CTO
ADR;WORK;POSTAL:北四环中路35号;100101
REV:2012-12-27T08:30:02Z
END:VCARD

二、示例代码

require_once 'phpqrcode.php';

$truename = "Yang";
$phone = "13444444444";
$tel = "18111111111";
$emailmp = "test@qq.com";
$addressmp = "地址";
$career = "";
$company = "";
//个人主页
$hp = "www.test.com";

//构建一个 vcard 格式数据
$vcard = 
    "BEGIN:VCARD".
    "\nVERSION:3.0".
    "\nFN:$truename".
    "\nTEL;CELL;VOICE:$phone".
    "\nTEL;WORK;VOICE:$tel".
    "\nEMAIL:$emailmp".
    "\nADR:$addressmp".
    "\nTITLE:$career".
    "\nORG:$company".
    "\nURL:$hp".
    "\nEND:VCARD";
 
//二维码信息,用urlencode编码
//$data = urlencode($vcard);
$data = urlencode($vcard);

$errorCorrectionLevel = 'M';//容错级别
$matrixPointSize = 4;//生成图片大小
//生成二维码图片 
QRcode::png($vcard, 'qrcode.png', $errorCorrectionLevel, $matrixPointSize, 2); 
$logo = false;//准备好的logo图片 
$QR = 'qrcode.png';//已经生成的原始二维码图 

$QR = imagecreatefromstring(file_get_contents($QR)); 
if ($logo !== FALSE) { 
 //$QR = imagecreatefromstring(file_get_contents($QR)); 
 $logo = imagecreatefromstring(file_get_contents($logo)); 
 $QR_width = imagesx($QR);//二维码图片宽度 
 $QR_height = imagesy($QR);//二维码图片高度 
 $logo_width = imagesx($logo);//logo图片宽度 
 $logo_height = imagesy($logo);//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); 
} 
//输出图片 
Header("Content-type: image/png");
ImagePng($QR);