给你的每篇博客文章生成一个二维码

刚才研究了个给文章自动生成一个 QR code,传说中二维码图就是了。我一直想着封装成函数,然后傻乎乎的怎么显示不了图片,原来函数里 return 错对象了,而且使用函数时忘记给图片地址加上 img 标签,所以就是不显示,我那个晕。

咨询了小蝴蝶美女,她似乎对我的想法很不屑一顾,将我发给她的代码随手一改就发回来了,她觉得下面这个方法更好,反正每篇都生成一个二维码图,写死就是了。代码如下,只要加到博客内容页任意地方就能生成二维码了:

<img src="https://chart.googleapis.com/chart?cht=qr&chs=150x150&choe=UTF-8&chld=L|4&chl=<?php the_permalink(); ?>" width="150" height="150" alt="QR 码" />

上面的代码中只要修改 150 这个图片大小就好了,<?php the_permalink(); ?>是自动获得文章链接,如果要生成博客站点的二维码只要替换成博客域名固定链接就可以了。

我给改了下,封装成函数,这样图片大小可以改变,不过其实使用起来也不大方便,因为用主题时即使是函数肯定也是写死的,除非结合后台设置二维码图片大小,所以用处不大。

测试本篇生成的二维码图:

QR 码

2013-4-28 更新

上面方法是直接通过 google 的 api 生成图片,有些地方可能因为网络问题,会很慢,所以小蝴蝶同学在胡长萌的要求下,又做了本地缓存图片的处理:http://xiaohudie.net/code/fopen-qr.html 现转在如下。

一、functions.php 里加入代码

function get_qr($url,$path,$qrpic){     

        set_time_limit (10); [nt]//设置十秒超时[/nt]
        $destination_folder = $path?$path.'/':''; 
        $localname = $destination_folder .$qrpic;     
        $file = fopen ($url, "rb"); [nt]//fopen函数的r+模式: 读写方式打开 文件指针指向文件头[/nt]
        if ($file) {     
                $newf = fopen ($localname, "wb"); [nt]// w+,读写方式打开 文件指针指向文件头 如果文件不存在则尝试创建之[/nt] 
                if ($newf)     
                        while(!feof($file)) {     
                                fwrite( $newf, fread($file, 1024 * 2 ), 1024 * 2 ); [nt]//写入文件,fread控制文件最大的大小,这里是2M[/nt] 
                        }     
        }     
        if ($file) {     
                fclose($file);  [nt]//关闭fopen打开的文件[/nt]   
        }     
        if ($newf) {     
                fclose($newf);     
        }     

} 

二、在网站根目录建立一个叫qrcode的新文件夹,确保有写入权限

三、以下代码放到需要输出二维码图片的地方,如 single.php

&lt;?php  
$localqr =  ABSPATH .'qrcode/'.get_the_id().'.jpg';
if (!file_exists($localqr)) {[nt]//如果图片已经存在,则不会再次保存[/nt]
        get_qr( "http://chart.googleapis.com/chart?cht=qr&amp;chs=100x100&amp;choe=UTF-8&amp;chld=L|4&amp;chl=".get_permalink() ,"qrcode", get_the_id().".jpg");[nt]//图片名以文章id命名[/nt]
}  
?&gt; 
&lt;img src="&lt;?php echo home_url( '' ); ?&gt;/qrcode/&lt;?php the_id()?&gt;.jpg" width="100" height="100" alt="QR 码"/&gt;
[nt]&lt;!--默认二维码图片大小是100*100,如果要改,需要改4个地方,已经用蓝色标注--&gt;[/nt]

作者: LMS

天行贱,君子自强自息。

标签

《给你的每篇博客文章生成一个二维码》有40个想法

      1. @LMS 有一个想法,google的api在国内多少有些不稳定,由于每篇文章的链接一般都不会变动,是否可以考虑将QR code图片缓存到本地目录。缓存的时候,将QR code图片使用文章ID重命名,然后自动根据文章id查找并加载缓存目录下的对应的图片。这样就perfect啦!不知道你和小蝴蝶能否实现呢?

发表评论

电子邮件地址不会被公开。 必填项已用*标注