在Matlab中调用ZXing的代码生成QR二维码
2016-04-28 23:00
861 查看
本作品采用知识共享署名-非商业性使用-相同方式共享
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。
打包好的zxing.jar要和上面的qrgen.m放在同一个目录中,因为qrgen的代码中利用mfilename获取自身的目录,并认为zxing.jar也在这一目录中。使用效果如下:
转自:http://blog.sina.com.cn/s/blog_4513dde601019mfh.html
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。
function mtx = qrgen(content, width, height) % Generate QR using zxing % Please compile the zxing source code and zip it into a 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'); c = 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 % c executes javarmpath(zxingpath) here
打包好的zxing.jar要和上面的qrgen.m放在同一个目录中,因为qrgen的代码中利用mfilename获取自身的目录,并认为zxing.jar也在这一目录中。使用效果如下:
转自:http://blog.sina.com.cn/s/blog_4513dde601019mfh.html
相关文章推荐
- Matlab调用ZXing的详细步骤——二维码生成
- MATLAB7.0在window7下的安装
- Matlab变量及其含义
- Matlab----画彩图
- MATLAB 与python reshape 比较
- 嵌套乘法求函数值(Matlab)
- 二分法求方程的根(Matlab)
- 均匀量化(Matlab)
- KNN算法中常用的距离计算公式
- Mac OS环境下的libsvm在Matlab中安装
- 分治思想 - 二分搜索技术 - MATLAB代码 list是数据集合,x是要查找的数据。
- matlab 可视化(specifier)
- 输出全排列问题,基于递归思想,MATLAB代码。
- matlab——corrcoef函数的使用
- Matlab显示图像时函数imge和imshow的区别
- matlab 实用程序片段
- cmd 命令行方式执行 matlab 脚本
- 自己写的Fibonacci 数列计算代码,基于MATLAB ,递归思想!
- matlab 解析 mnist 数据集
- ubuntu14.04下Matlab2014视频读取问题