首页/日志/正文

使用 Google API 生成二维码

Google API 可以非常方便的调用,下边的链接是一个示例:

== 我是示例==

参数解释:
1、http://chart.apis.google.com/chart? 调用Google API
2、cht=qr 选择生成类型为 qr 码。
3、chs=150×150 设置二维码图片大小。
4、chld=L|4 L表示默认纠错水平;4表示二维码图片的留白大小,留白的大小也是计算在二维码图片大小内的,可选值为 1~4 的整数。
5、chl=http://www.gkroot.com为二维码内容。
一般 WordPress 文章页可以使用下边的代码调用二维码,具体自己调节参数。

<img src="http://chart.apis.google.com/chart?cht=qr&chs=150x150&chld=L|2&chl=<?php the_permalink(); ?>" class="qrcode pic" width="150" height="150" alt="qrcode" />

 

由于 Google 服务器对国内不太稳定,所以我们可以把二维码图片缓存到本地来解决这一缺陷。

首先将下边的代码扔到当前主题的 functions.php 的最后一个 ?> 前。

/*
  *Bing - function - 二维码配置
  *Form:www.bgbk.org
*/

//二维码缓存
function Bing_qr($url,$path,$qrpic){
	set_time_limit (10);
	$destination_folder = $path?$path.'/':''; 
	$localname = $destination_folder .$qrpic;     
	$file = fopen ($url, "rb");
	if($file){
	  $newf = fopen ($localname, "wb");
		if($newf)     
			while(!feof($file)){     
				fwrite( $newf, fread($file, 1024 * 2 ), 1024 * 2 );
	    	}     
		}     
	if($file){     
		fclose($file);
	}     
	if($newf){     
		fclose($newf);    
	}
}

//生成二维码地址
function Bing_echo_qr($imgsize = 150,$echo = true){
	$cache = false;
	$cache = true;
	if(is_single() || is_page()) $imgname = get_the_id();
	elseif (is_home() || is_front_page())  $imgname = 'home';
	elseif(is_category()) $imgname = 'cat-'.get_query_var('cat');
	elseif(is_tag()) $imgname = 'tag-'.get_query_var('tag_id');
	if(!is_home()) $permalink = get_permalink();
	else $permalink = get_option('home');
	if($cache){
		$localqr =  ABSPATH .'qrcode/'.$imgname.'.jpg';
		if(!file_exists($localqr)){
			Bing_qr("http://chart.googleapis.com/chart?cht=qr&chs=".$imgsize."x".$imgsize."&choe=UTF-8&chld=L|0&chl=".$permalink ,"qrcode", $imgname.".jpg");
	    }
		$main = get_home_url('').'/qrcode/'.$imgname.'.jpg';
  	}
  	else $main = "http://chart.googleapis.com/chart?cht=qr&chs=".$imgsize."x".$imgsize."&choe=UTF-8&chld=L|0&chl=".$permalink;
  	if($echo) echo $main;
  	else return $main;
}

//输出二维码
function Bing_echo_qrcode($imgsize = 150){
	echo '<img src="'.Bing_echo_qr($imgsize,false).'" class="qrcode" width="'.$imgsize.'" height="'.$imgsize.'" alt="qrcode" />';
}

然后在需要调用二维码的地方使用下边的函数就行了:

<?php if(function_exists('Bing_echo_qrcode')&&function_exists('Bing_echo_qr')&&function_exists('Bing_qr')) Bing_echo_qrcode(150);?>

其中的 150 为二维码大小,可以自己修改。

如果想关闭二维码缓存只需要将第一段代码的 30 行 $cache = true; 注释掉即可。


 

还没有评论,快来抢沙发!

发表评论

  • 😉
  • 😐
  • 😡
  • 😈
  • 😯
  • 😛
  • 😳
  • 😮
  • 😆
  • 💡
  • 😀
  • 👿
  • 😥
  • 😎
  • 😕