在Matlab中调用ZXing的代码生成QR二维码

本作品采用 知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议 进行许可。允许非商业转载,但应注明作者及出处。
作者:xialulee
最初发布于:2011年10月30日, http://blog.sina.com.cn/xialulee
如果不会编译Java源码,或者不会在Matlab中使用Java,可以参考这里:
《Matlab调用ZXing的详细步骤——二维码生成》

        
      班上很多电脑都是没有联网的,有时候在上面看Matlab的文档时,有一些链接想查阅一下,于是可以拿出可以上网的手持设备,比如手机啊,MP3播放器什么的,来看这些链接的内容。但是在手持设备触屏的虚拟键盘上输入链接地址并不是一件愉快的事情。以前在 《Python通过JPype调用ZXing生成二维码》 给出的Python脚本可以将文本转化为QR二维码,这样就可以利用设备上的摄像头直接通过扫描的方式获取链接地址。但是,要使用这个脚本,需要电脑上安装了Python以及JPype,可是很多电脑没有这些。由于这里大部分电脑都有Matlab,而Matlab又集成了Java,因此,写了一个Matlab函数,调用ZXing来生成二维码。
       在 《Python通过JPype调用ZXing生成二维码》 中,利用MultiFormatWriter对象得到二维码的BitMatrix对象后,通过MatrixToImageWriter写入到一个图像文件当中。但是,每次都要为生成的链接创建一个文件觉得有点麻烦,所以,稍微研究了一下MultiFormatWriter的encode方法返回的BitMatrix对象,发现对其调用toString方法后,得到了用字符串形式表示的二维码图像,其中,两个连续的空格代表浅像素,一个'X'和一个空格代表深像素。这样,在Matlab中,将这个字符串转化为一个0-1矩阵,并使用imshow来显示它,就避免了创建文件。函数的代码如下。想要正常使用这个函数,需要先下载ZXing的源码,编译,并将编译出的相关的class们都打包成zxing.jar。
在Matlab中调用ZXing的代码生成QR二维码

function mtx qrgen(content, width, height)
% Generate QR using zxing
% Please compile the zxing source code and zip it into jar file named
%   zxing.jar
% Put zxing.jar in the same directory of this file.
% Parameters:
%   content: string to be encoded
%   width:   the width of the image
%   height:  the height of the image
% Matlab 7.11
% xialulee 2011.10.30 PM 08:18
zxingpath fullfile(fileparts(mfilename('fullpath')), 'zxing.jar');
onCleanup(@()javarmpath(zxingpath));
javaaddpath(zxingpath);
writer com.google.zxing.MultiFormatWriter();
bitmtx writer.encode(content, com.google.zxing.BarcodeFormat.QR_CODE, ...
    width, height);
mtx char(bitmtx);
clear bitmtx writer
mtx(mtx==10) []; % remove \n
mtx reshape(mtx(1:2:end), width, height)'; % remove extra space and transpose
mtx(mtx~='X'1;
mtx(mtx=='X'0;
mtx double(mtx);
if nargout == 0
    imshow(mtx);
end
end % executes javarmpath(zxingpath) here

打包好的zxing.jar要和上面的qrgen.m放在同一个目录中,因为qrgen的代码中利用mfilename获取自身的目录,并认为zxing.jar也在这一目录中。使用效果如下:

在Matlab中调用ZXing的代码生成QR二维码


转自:http://blog.sina.com.cn/s/blog_4513dde601019mfh.html

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值