前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >matlab之随心所欲创建QR二维码

matlab之随心所欲创建QR二维码

作者头像
巴山学长
发布2019-07-19 16:06:33
1.3K0
发布2019-07-19 16:06:33
举报
文章被收录于专栏:巴山学长巴山学长

二维码已经成为日常中不可或缺的工具,使用它可以轻松地进行支付交易、添加好友、传递信息,化繁为简,极大便捷了人们的生活。

今天给大家介绍使用ZXing库文件生成二维码的方法,ZXing是使用Java语言编写一种开源的、多格式的1D/2D条形码图像处理库。本文使用的是ZXing的dll文件,使用前需要使用NET.addAssembly函数将相关类库加载到matlab中,ZXing库中有很多实例方法,可以通过methodsview函数进行详细查看。

以下是具体实现程序:

% 读取logo图片
I = imread('logo.jpg');
% 取logo大小
[Lx,Ly,~] = size(I);
% 定义二维码大小
len = 600;
% 将 .NET 程序集添加至 MATLAB
asmInfo = NET.addAssembly([pwd,'\zxing.dll']);
% methodsview ZXing.MultiFormatWriter
% 创建MultiFormatWriter类的对象
writer = ZXing.MultiFormatWriter();
% 创建泛型特化实例
hints = NET.createGeneric('System.Collections.Generic.Dictionary', {'ZXing.EncodeHintType', 'System.Object'});
% 采用utf-8编码以支持中文显示
hints.Add(ZXing.EncodeHintType.CHARACTER_SET, 'utf-8')
% 调用MultiFormatWriter类的成员函数encode将指定内容加密成bitmap对象
bitM = writer.encode('感谢关注matlab爱好者!', ZXing.BarcodeFormat.QR_CODE,len,len,hints);
% 将对象转换成字符串
QR = char(bitM.ToString());
% 删除字符串中的换行符'\r\n',其中\r的值为13,\n的值为10
QR(QR==10) = [];
QR(QR==13) = [];
% 删除分隔像素的空格
nQR = QR(1:2:end);
% 将字符串转换成len*len的字符串矩阵
nQR = reshape(nQR, len, len);
% 二值化字符串
nQR(nQR~='X') = 255;
nQR(nQR=='X') = 0;
% 定义新矩阵以组合logo和QR码图像
nm = 255*ones(len,len,3);
nm(:,:,1) = nQR;
nm(:,:,2) = nQR;
nm(:,:,3) = nQR;
nm(round(len/2-Lx/2):round(len/2-Lx/2)+Lx-1,round(len/2-Ly/2):round(len/2-Ly/2)+Ly-1,:) = I;
% 强制转换为uint8型数据
nm = uint8(nm);
imshow(nm);
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 巴山学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档