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

刚才研究了个给文章自动生成一个 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]
文章目录
THE END

评论 40

  1. 🏅

    :roll: 好棒,使用在网易博客,出现了问题,求教啊!!

  2. 🏆🏅

    手机端浏览,正文部分显示效果是粗体还是黑体?这样阅读不是很舒服。

    1. 那个手机主题做一半放那里没改动了呢,没想到你会用手机看啊。

      1. 🏆🏅

        呵呵,无聊的。刚给博客安装了一个手机端插件,看看效果。

  3. 🏆🏅

    可扫描的二维码较大,没地方放

    1. 这个确实,只能下拉或者弹出比较好点,其他的都感觉像块膏药一样贴那里。

  4. 🏅🏅🏅

    最近有打算加上这个二维码,没想到就有教程了,发现似乎有天助我 :grin:

      1. 🏅🏅🏅

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

        1. 这个真不会,你想的出方法来怎么不去试试,我php还不会呢。

  5. 🏆🏅

    ,介个ZZb还行,实际放博客上真木有多大意义...好疯狂的代码....尤其是那个小蝴蝶~~

  6. 🏆🏅

    你提交的内容是什么,我怎么没看见?!

  7. 🏆🏆

    看你这么折腾,有空帮我搞下返回顶部、写评论、到底部”效果和侧边栏指定模块随窗体滑动效果吧,我把主题发给你啊

    1. 你看上哪家博客的这三个东西的样子告诉我,我去给你整。主题发i#lms.im

      1. 🏆🏆🏅

        L童鞋,真心是个好淫,热心肠啊,哇哈哈

    1. 我也这么觉得,所以才没有给自己的博客全部加上去。

  8. 🏅🏅🏅

    有问题,小蝴蝶。

    这广告语设计的不错吧

    1. 这广告语有歧义,
      应该是:有问题,找小蝴蝶。
      英文:Problems to Find butterfly。

发表评论

幸会!