最近做了个扫描二维码得到vcard的项目,遇到一个问题,有一部分生成完的二维码,用android系统手机扫描后得到的vcard中的中文姓名是乱码,经过比对发现,这部分vcard中ORG这个类型没有内容,随即判断没内容就加上一个固定的字符串,这样乱码的问题得以解决.
1.google开放api,代码如下:
复制代码 代码如下:
$urlToEncode="https://www.jb51.net"; 
generateQRfromGoogle($urlToEncode); 
function generateQRfromGoogle($chl,$widhtHeight ='150',$EC_level='L',$margin='0') 
{ 
$url = urlencode($url); 
echo ''; 
}
2.php类库PHP QR Code
地址:
下载:
用例,代码如下:
# 创建一个二维码文件
复制代码 代码如下:
QRcode::png('code data text', 'filename.png');
# 生成图片到浏览器
复制代码 代码如下:
QRcode::png('some othertext 1234');
3.libqrencode
地址:
4.QRcode Perl CGI & PHP scripts
地址:
第2种方法中在二维码中间加上logo,修改phpqrcode.php中的QRimage类里的png方法,代码如下:
复制代码 代码如下:
public static function png($frame, $filename = false, $pixelPerPoint = 4, $outerFrame = 4, $saveandprint=FALSE, $mergePic='') 
{ 
$image = self::image($frame, $pixelPerPoint, $outerFrame); 
if($mergePic) { 
$im = imagecreatefrompng($mergePic); 
$w = imagesx($im); 
$h = imagesy($im); 
ImageAlphaBlending($image, true); 
ImageAlphaBlending($im, true); 
$qrw = (imagesx($image)-$w)/2; 
$qrh = (imagesy($image)-$h)/2; 
imagecopy($image, $im, $qrw, $qrh, 0, 0, $w, $h); 
imagedestroy($im); 
} 
if ($filename === false) { 
Header("Content-type: image/png"); 
ImagePng($image); 
} else { 
ImagePng($image, $filename); 
if($saveandprint===TRUE){ 
header("Content-type: image/png"); 
ImagePng($image); 
} 
} 
ImageDestroy($image); 
}
