Home  >  Article  >  php教程  >  php生成二维码和QR图片中间加logo

php生成二维码和QR图片中间加logo

WBOY
WBOYOriginal
2016-06-13 10:53:42875browse

两年前我写二维码的时候还没有人认识。后来手机上扫描二维码的软件多了,微信也改变了这个时代。
感谢智能手机和微信。


==============================================================
二维码是二维条形码的一种,可以将网址、文字、照片等信息通过相应的编码算法编译成为一个方块形条码图案,手机用户可以通过摄像头和解码软件将相关信息重新解码并查看内容。

二维条码/二维码(dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的"0"、"1"比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处   理:它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化等特点。在许多种类的二维条码中,常用的码制有:Data Matrix, Maxi Code, Aztec, QR Code, Vericode, PDF417, Ultracode, Code 49, Code 16K 等,QR码是1994年由日本Denso-Wave公司发明。QR来自英文「Quick Response」的缩写,即快速反应的意思,源自发明者希望QR码可让其内容快速被解码。QR码最常见于日本、韩国;并为目前日本最流行的二维空间条码。

<?php /**  * php生成二维码的2种方式
  * @author insun  */ //1.google开放api
 $urlToEncode="smart_insun";
 generateQRfromGoogle($urlToEncode);
 function generateQRfromGoogle($chl,$widhtHeight =&#39;150&#39;,$EC_level=&#39;L&#39;,$margin=&#39;0&#39;)
 {  //$url = urlencode($url);
  echo &#39;<img src="http://chart.apis.google.com/chart?chs=&#39;.$widhtHeight.&#39;x&#39;.$widhtHeight.&#39;&cht=qr&chld=&#39;.$EC_level.&#39;|&#39;.$margin.&#39;&chl=&#39;.$chl.&#39;" alt="QR code" widhtHeight="&#39;.$widhtHeight.&#39;" widhtHeight="&#39;.$widhtHeight.&#39;"/>';
 } //2.php类库PHP QR Code:http://phpqrcode.sourceforge.net/
 /* $data 数据
 $filename 保存的图片名称
 $errorCorrectionLevel 错误处理级别
 $matrixPointSize 每个黑点的像素
 $margin 图片外围的白色边框像素
 */ include "phpqrcode/qrlib.php";
 $data = "insun";
 $filename ="QR.jpg";
 $errorCorrectionLevel = 'L';
 $matrixPointSize = 2;
 $margin = 5;
 QRcode::png($data, $filename, $errorCorrectionLevel, $matrixPointSize, $margin);//这样就生成了QR.jpg
 
 
 

 

QR图片中间加logo
 

<?php /**  * QR Code + Logo Generator QR图片中间加logo,QR是根据google开放api生成的,其实啥都没有
   *    * http://labs.nticompassinc.com     */  //ini_set("auto_detect_line_endings", true);
  
  $data = isset($_GET[&#39;data&#39;]) ? $_GET[&#39;data&#39;] : &#39;http://weixin.qq.com/r/8bxsY6LEqpzVh7MAn_nV&#39;;
  $size = isset($_GET[&#39;size&#39;]) ? $_GET[&#39;size&#39;] : &#39;200x200&#39;;
  $logo = isset($_GET[&#39;logo&#39;]) ? $_GET[&#39;logo&#39;] : &#39;./logo.jpg&#39;;//中间那logo图
  // Get QR Code image from Google Chart API
  // http://code.google.com/apis/chart/infographics/docs/qr_codes.html
  //https://chart.googleapis.com/chart?cht=qr&chld=H|1&chs=&#39;.$size.&#39;&chl=&#39;.urlencode($data));
  $png = "http://chart.googleapis.com/chart?chs=150x150&cht=qr&chl=Hello+world&chld=L|1&choe=UTF-8";
  $QR = imagecreatefrompng($png);//Warning: imagecreatefrompng() [function.imagecreatefrompng]: Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? =
  //$QR = imagecreatefrompng(&#39;./chart.png&#39;);//外面那QR图
  if($logo !== FALSE){
   $logo = imagecreatefromstring(file_get_contents($logo));
  
   $QR_width = imagesx($QR);
   $QR_height = imagesy($QR);
       
   $logo_width = imagesx($logo);
   $logo_height = imagesy($logo);
          
   // Scale logo to fit in the QR Code
   $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;
   //echo $from_width;exit;
   imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
  }
  header(&#39;Content-type: image/png&#39;);
  imagepng($QR);
  imagedestroy($QR);
 ?>
 

参考:QR
http://phpqrcode.sourceforge.net/

php生成二维码的类库PHP QR Code的使用介绍
http://www.BkJia.com/kf/201212/178526.html

https://developers.google.com/chart/infographics/docs/qr_codes?hl=zh-CN

http://ishare.iask.sina.com.cn/download/explain.php?fileid=23514545&page=2

 php生成二维码可以有以下几种方式
http://blog.csdn.net/shojecom/article/details/8158571

http://www.qrhacker.com/
http://www.shadowdev.com/services/qr/
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn