欢迎您来到 数字平台。 您尚未登录。[登录] [注册新用户]
当前位置: 论坛首页 / 栏目 产品与服务 / 文章 645

点击:42161[回复顶层] [树状] [详细]
[回复留言] [回复(需要先登录)] [引用(需要先登录)]精品第 1 楼
文章id: 645
在OPAC中增加图书基本信息生成二维码功能

作者: 精灵


一、二维码解析

     二维码 (2-dimensional bar code) 是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理: 二维条码/二维码能够在横向和纵向两个方位同时表达信息,因此能在很小的面积内表达大量的信息。

二、二维码与OPAC结合后所带来的好处

     读者在图书馆的OPAC系统中检索或浏览到心仪的图书后,往往需要记住图书的“题名与责任说明”、“责任者”、“出版发行”、“索取类号”等等基本信息这样才好到图书馆中找到并借阅此书,但是,这类信息量往往很大,读者完全靠头脑很难全部记清,这时,读者通常会使用笔、纸抄录此图书的基本信息,或者读者服务开展稍好一些的图书馆会提供打印服务,把检索到图书的基本信息打印出来交给读者。但是,无论是采用手工抄录的办法还是使用机械打印的办法都不可避免的会带来两个问题。第一,如果使用手工抄录的话读者会感觉很麻烦很繁琐,会降低读者到馆的借阅热情,第二,如果采用打印的方式虽然减轻了读者的劳动量,但是,会增加图书馆的物资损耗,一般的小馆消耗不起也就无法开展这样的读者服务。但是,如果我们采用二维码来解决这个问题。就显得方便很多,我们把图书的基本信息自动生成一个二维码,读者使用带有照相功能的手机,安装上二维码识别软件,对显示器上所显示的二维码进行扫描。这样图书的基本信息都会自动扫锚入手机中,而读者只需要带着手机来到图书馆,按照手机上所显示的内容到馆找书、借阅即可。这样,对内既减轻了读者找书所带来的各项开销,又极大的方便了读者对图书的借阅,还能提高读者借阅热情,对外又能宣传图书馆自动化管理的成果可谓一举多得。

三、二维码在OPAC中的挂接方式(以图书的unimarc格式为例)

     1、编辑书目库中的opac_biblio.fltx配置文件

         在文件头部的<def>元素内,增加变量定义的代码:

         string qr_905="";

         string qr_700=" ";

     2、找到处理700字段$a子字段的结构,也就是<field name='700'>/<subfield name='a'>元素内适当位置,添加如下代码:

         Root.qr_700 += this.Content+" ";

     3、找到处理905字段$d子字段的结构,也就是<field name='905'>/<subfield name='d'>元素内适当位置,添加如下代码:

         Root.qr_905=this.Content;

         然后在找到处理905字段$e子字段的结构,也就是<field name='905'>/<subfield name='e'>元素内适当位置,添加如下代码:

         Root.qr_905 += "/"+this.Content;

     4、找到最后一个</end>元素内,在“Host.ResultString += "</table>";”位置之前添加如下代码:

         string temp_name="XX学院图书馆;";//学校名称

         string temp = titleandauthor+qr_905+publication+qr_700;//对所要编码的信息进行汇总,以方便后面的判断。

         if (temp.Length > 0)

        {

          //下面是套用google的API,但是因为“google一下就知道的太多”等原因,党中央一直对google关怀备至,所以导致连接非常不稳定。由于显示不稳定(一会显示,一会不显示)等原因我这里没有采用直接在“OPAC”中加入图片的方法,而是采用了链接的方式。

           Host.ResultString += "<tr class='content'>";

          Host.ResultString += "<td class='name' width='10%' nowrap>" + "二维码_google" + "</td>";

          Host.ResultString += "<td class='value' width='90%'><a href='http://chart.apis.google.com/chart?cht=qr&chld=L|4&chs=300x300&chl=" + temp_name + "题名:" + qr_200 + ";责任者:" + qr_700 + ";出版发行者:" + publication + ";索取类号:" + qr_905 + ";ISBN:" + isbn.Replace("-", "") + "'>点击此处查看</a></td>";

          Host.ResultString += "</tr>"; 

          //下面是套用“灵动门户网站”的API,它的链接经我观察比较稳定,所以,我采用“OPAC”系统显示+链接的方式,在“OPAC”系统中显示一个200X200的图片(经过我测试200X200以下的图片也可显示出来,不过扫描的时候对手机摄像头要求相当高,一般的摄像头很难扫描出来。),如果读者扫描这个图片有问题的话,可以直接点击图片,会显示出一个300X300的图片,以方便读者扫描。

           Host.ResultString += "<tr class='content'>";

          Host.ResultString += "<td class='name' width='10%' nowrap>" + "二维码_灵动" + "</td>";

          Host.ResultString += "<td class='value' width='90%'><a href='http://www.qrcn.net/api?chs=300x300&chl=" + temp_name + "题名:" + qr_200 + ";责任者:" + qr_700 + ";出版发行者:" + publication + ";索取类号:" + qr_905 + ";ISBN:" + isbn.Replace("-", "") + "'><img src='http://www.qrcn.net/api?chs=200x200&chl=" + temp_name + "题名:" + qr_200 + ";责任者:" + qr_700 + ";出版发行者:" + publication + ";索取类号:" + qr_905 + ";ISBN:" + isbn.Replace("-", "") + "' /></a></td>";

          Host.ResultString += "</tr>"; 

        }        

        编辑保存后1.X重启“IIS”服务,2.X按照“内核”、“应用”、“IIS”的顺序重启三个服务,然后进入“OPAC”系统在其中随意检索一条数据,就可以看到效果了,读者这时可以打开手机中的二维码软件对这幅图片进行扫描操作。        

      

四、注意事项

     1、浏览器要使用IE7.0或以上版本,因为我发现在IE6.0下显示这个二维码图片会不正常。

     2、修改文件前要做好备份工作,以策万全。

     3、手机扫描的时候手不要抖动,因为手机扫描的原理其实就是在照相,手机先把二维码照下来,然后再对其进行分析,在扫描的时候如果手抖动图像就会变得不清晰,手机的软件就无法对其进行分析,另外,带有自动对焦功能的手机在这方面具有优势,因为不用手动的去对焦距或者是前后去找距离。呵呵。

五、写在最后

      这个二维码生成的API是谷歌提供的,呵呵。。所以,先对谷歌公司表示感谢。呵呵。。没有他们提供的API要想实现这个功能也不能这么顺畅。另外,在这里对谢老师表示感谢,因为这个功能向OPAC中挂接我是参考了谢老师写的“如何在OPAC中增加google图书预览功能”后才知道,呵呵。。所以,在这里也向谢老师表示感谢。

      哦。。对了。。上面的功能我是在dp2V2.0中的“OPAC”中测试成功的,用的是谷歌的“chrome”浏览器,以及我自己的黑莓8520手机进行扫描。



资源:

-- ID: 0 文件名: 检索.jpg 尺寸: 15039 最后修改时间: 2011-05-13 10:42:20 --


-- ID: 1 文件名: bb.JPG 尺寸: 16892 最后修改时间: 2011-05-13 10:55:04 --



发表时间: 2011-05-11 14:35:39
最后修改时间: 2011-05-13 10:55:34
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 2 楼
文章id: 646
叹为观止

作者: xietao


鼓掌鼓掌!

感谢精灵给我们带来这么好的创意和解决方案。

这里提出点小小的想法,供精灵参考:

也可以在书目详细显示的页面上,直接用<img>出现二维码图像,而不必让读者再点击一下。

当然,有朋友可能会担心速度问题,认为直接显示图像会影响页面载入的速度。我认为这个不必担忧,因为HTML页面中的<IMG>是被浏览器多线程并行载入的,或者最不济就是HTML载入并显示后再顺次载入刷新(图像所在位置)的,有无图像基本不会影响页面本身(图像以外文字部分)的载入速度。



发表时间: 2011-05-11 15:22:45



[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 3 楼
文章id: 647

作者: xietao


Host.ResultString += "点击打开";

这句话是不是代码被当作HTML解释的缘故?(发帖时选择纯文本格式也许能避免这个问题?)

我看了一下是用到google的API:

http://chart.apis.google.com/chart?cht=qr&chs=500x500&chld=H|1&chl=

麻烦精灵说明一下API的用法。



发表时间: 2011-05-11 15:26:09
最后修改时间: 2011-05-11 15:27:37



[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 4 楼
文章id: 648
回复: 叹为观止

作者: 精灵


 
======================
以下是引用 xietao 于 2011-5-11 15:22:45 发表的文字:

鼓掌鼓掌!

感谢精灵给我们带来这么好的创意和解决方案。

这里提出点小小的想法,供精灵参考:

也可以在书目详细显示的页面上,直接用出现二维码图像,而不必让读者再点击一下。

当然,有朋友可能会担心速度问题,认为直接显示图像会影响页面载入的速度。我认为这个不必担忧,因为HTML页面中的是被浏览器多线程并行载入的,或者最不济就是HTML载入并显示后再顺次载入刷新(图像所在位置)的,有无图像基本不会影响页面本身(图像以外文字部分)的载入速度。

 

============================== 

呵呵。。感谢,谢涛老师的提醒。我已经修改了。在“OPAC”页面中显示一个200X200的图片,如果读者扫描有困难,再点击图片,页面会自动显示一个300X300大小的图片以方便读者扫描。呵呵。。。。。。。



发表时间: 2011-05-11 15:54:08
最后修改时间: 2011-05-13 10:59:02
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 5 楼
文章id: 649
回复:

作者: 精灵


==========

以下是引用 xietao 于 2011-5-11 15:26:09 发表的文字:

Host.ResultString += "点击打开";

这句话是不是代码被当作HTML解释的缘故?(发帖时选择纯文本格式也许能避免这个问题?)

我看了一下是用到google的API:

http://chart.apis.google.com/chart?cht=qr&chs=500x500&chld=H|1&chl=

麻烦精灵说明一下API的用法。

==========

呵呵。。谢老师您好,关于语句的问题,由于我使用这个论坛经验不多,修改了几次都没能成功,呵呵。。所以,我就用图片的方式放上去了。。。。

对于GOOGLE这个API的说明是这样的。

这个API中一共有五个参数

1、cht=qr

   这是说图表类型为qr也就是二维码。

2、chs=<width>x<height>

   这是说生成图片尺寸宽x高。这并不是生成图片的真实尺寸,应该是最大尺寸。我在调用的时候采用的是500X500因为经过我测试,最大也只能填写这么大了。呵呵。。再大会报错。呵呵。

3、chl=<data>

   这是表示QR内容,也就是解码后看到的信息。包含中文时请最好使用UTF-8编码汉字,否则将出现问题。

4、choe=<output_encoding>

   这是表示编码的形式google支持三种编码形式“UTF-8”、“Shift_JIS”、“ISO-8859-1”,我查了一下资料“ISO-8859-1”是一种西欧语音用的编码,而“Shift_JIS”是一种小鬼子搞的编码。如果不加这个参数,系统会默认使用“utf-8”编码。

5、chld=<error_correction_level>|<margin>

   <error_correction_level>指的是容错级别一共分为四级L、M、Q、H

   L-可以恢复损失7%的数据;

   M-可以恢复损失15%的数据;

   Q-可以恢复损失25%的数据;

   H-可以恢复损失30%的数据;

   <margin>是指生成的二维码离图片边框的距离。

另外,二维码的像素是固定的一般是从21到177的长/宽,每次递增4个像素点。每个配置被称为一个等级。长和宽越大,存储的信息就越多。好的设备可以识别40级的二维码所存储的信息,一般移动设备好像也就能读取4级也就是33x33大小的二维码。不过如果使用GOOGLE的API的话,GOOGLE会根据你将存储的信息的大小来决定使用哪个等级的二维码。

刚才在浏览网页的时候,突然间发现一个不好的消息。GOOGLE的API可能会限制使用次数,如果这个消息是真的,那简直就是一个天大的打击。这会直接影响到这个功能的使用,以及这项服务的开展,唉。。。。。。GOOGLE呀GOOGLE既然你都已经把人扶上马了,干嘛不顺便再送一程呢?



发表时间: 2011-05-11 16:34:31
最后修改时间: 2011-05-11 18:31:11
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 6 楼
文章id: 650
又发现一个API

作者: 精灵


http://www.mayacode.com/api.php?v=1&f=1&t=1&sid=4&Subject=1&Intro=1

这时我刚发现的一个免费API。“Subject”标题“Intro”正文,。“Subject”、“Intro”不能为空。经过我的测试,生成QR码没有问题。但是,我手机扫描的时候显示的是乱码,不知道是不是我手机对于中文字符支持的原因造成的。希望有条件的朋友测试一下,另外,也希望大家能提供一下自己发现的API,使这个功能更加稳定。



发表时间: 2011-05-12 08:41:30
最后修改时间: 2011-05-13 10:52:33
页 1 / 1
 

在线用户
(无) 
当前栏目在线用户数 0, 总在线用户数 0