发明内容
要解决的问题
针对现有的编码图像的方法数据量表达量低,传输速度慢的问题,本发明提供一种基于颜色的堆叠式三维码编码方法、编码装置、解码方法、解码装置以及存储介质,该编码方法通过获取待编码数据,将所述待解码数据按照预定规格分块,生成数据块;对每个数据块均生成同一规格的二维码;叠加所述每个二维码像素的RGB颜色值,从而得到一个由多层二维码叠加形成的三维码。该方法实现方式简单,编码、解码速度快,数据容量是同等像素二维码的3倍,且在图像数据编码后无法被其他工具识别或破解,保障图像数据传输过程中的安全性,满足了企业对信息保密要求。
技术方案
为解决上述问题,本发明采用如下的技术方案。
本发明第一方面提供一种基于颜色的堆叠式的三维码编码方法,包括:
S102:获取待编码数据,将所述待解码数据按照预定规格分块,生成数据块;
S104:对每个数据块均生成同一规格的二维码;
S106:叠加所述每个二维码像素的RGB颜色值,从而得到一个由多层二维码叠加形成的三维码。
优选的,所述的步骤S102包括:
计算所述待解码数据中每个数据块信息的容量;
当所述数据块信息的容量符合阈值,将所述带编码的数据块信息平均分成三个数据块;
优选的,所述步骤S104包括:根据所述三个数据块信息生成三个同规格的二维码,按照预定顺序将所述二维码中黑色像素点分别用RGB颜色表征。
优选的,所述的步骤S106包括:将叠加后每个像素点的RGB值的第1、第2位取自第一个二维码对应的像素点颜色值,第3、第4位取自第二个二维码对应像素点颜色值,第5、第6位取自第三个二维码对应像素点颜色值。
本发明第二方面提供一种基于颜色的堆叠式的三维码编码装置,包括:
数据分割模块,用于获取待编码数据,将所述待解码数据按照预定规格分块,生成数据块;
二维码生成模块,用于将每个数据块均生成同一规格的二维码;
像素叠加模块,用于叠加所述每个二维码像素的RGB颜色值,从而得到一个由多层二维码叠加形成的三维码。
本发明第三方面提供一种基于颜色的堆叠式的三维码解码方法,包括:
S202:获取三维码图像信息,在所述三维码图像信息中的每个像素中剥离出堆叠的二维码的像素值;
S204:根据所述二维码的像素值,输出二维码图像信息;
S206:读取所述二维码图像信息,输出数据。
优选的,所述步骤S202包括:读取所述三维码图像信息中每个像素点的RGB颜色值,以RGB颜色值的第1、第2位作为解码的第一个二维码的像素点颜色值,以RGB颜色值的第3、第4位作为解码第二个二维码的像素点颜色值,以RGB颜色值的第5、第6位作为解码第三个二维码的像素点颜色值。
优选的,所述步骤S206包括:解析二维码图像信息,获得解析结果,将所述解析结果拼凑成一个完整的字符串,并输出。
本发明第四方面提供一种基于颜色的堆叠式的三维码解码装置,包括:
像素剥离模块,用于获取三维码图像信息,在所述三维码图像信息中的每个像素中剥离出堆叠的二维码的像素值;
二维码输出模块,用于根据所述二维码的像素值,输出二维码图像信息
解析模块,用于读取所述二维码图像信息,输出数据。
本发明第五方面提供一种存储介质,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述的方法。
有益效果
相比于现有技术,本发明的有益效果为:
本发明的编码方法通过获取待编码数据,将所述待解码数据按照预定规格分块,生成数据块;对每个数据块均生成同一规格的二维码;叠加所述每个二维码像素的RGB颜色值,从而得到一个由多层二维码叠加形成的三维码。该方法实现方式简单,编码、解码速度快,数据容量是同等像素二维码的3倍,且在图像数据编码后无法被其他工具识别或破解,保障图像数据传输过程中的安全性,满足了企业对信息保密要求。
具体实施方式
下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。
在本申请中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在本发明的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
具体实现中,本发明实施例中描述的终端包括但不限于诸如具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的移动电话、膝上型计算机或平板计算机之类的其它便携式设备。还应当理解的是,在某些实施例中,所述设备并非便携式通信设备,而是具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的台式计算机。
在接下来的讨论中,描述了包括显示器和触摸敏感表面的终端。然而,应当理解的是,终端可以包括诸如物理键盘、鼠标和/或控制杆的一个或多个其它物理用户接口设备。
终端支持各种应用程序,例如以下中的一个或多个:绘图应用程序、演示应用程序、文字处理应用程序、网站创建应用程序、盘刻录应用程序、电子表格应用程序、游戏应用程序、电话应用程序、视频会议应用程序、电子邮件应用程序、即时消息收发应用程序、锻炼支持应用程序、照片管理应用程序、数码相机应用程序、数字摄影机应用程序、web浏览应用程序、数字音乐播放器应用程序和/或数字视频播放器应用程序。
可以在终端上执行的各种应用程序可以使用诸如触摸敏感表面的至少一个公共物理用户接口设备。可以在应用程序之间和/或相应应用程序内调整和/或改变触摸敏感表面的一个或多个功能以及终端上显示的相应信息。这样,终端的公共物理架构(例如,触摸敏感表面)可以支持具有对用户而言直观且透明的用户界面的各种应用程序。
实施例1
如图1以及图5所示,本实施例提供一种基于颜色的堆叠式的三维码编码方法,包括:
S102:获取待编码数据,将所述待解码数据按照预定规格分块,生成数据块。
具体的,本实施例的待编码数据,通常是十进制、十六进制数据,比如电厂通过数采设备转发出来的符合104规约的十六进制数据。也可以是用户可以输入待编码的网址、文字、数字、字母等数据信息,从而可以获取到某一个待编码的数据信息,后续需要根据这个待编码的数据信息去生成三维码,终端扫描三维码就可以获取到待编码的数据信息。本领域技术人员,应当理解用户可以输入背景图片,从而可以获取到一个背景图片,该背景图片上可以是三维码代表的公司的商标图案,1ogo图案,也可以是三维码的公司的介绍信息等等。本实施例中优选的,使用白色背景,对于下面的三维码的颜色的读取,不会产生干扰。
进一步,计算所述待解码数据中每个数据块信息的容量;
具体的,先根据要生成三维码的规格,计算出每个数据块的容量,当所述数据块信息的容量符合阈值,将所述带编码的数据块信息平均分成三个数据块,此处的阈值为每个数据块的最大容量。需要说明的是,本实施例中的三维码由三个二维码叠加而成,一个二维码由所述的一个数据块编码生成。即是先计算这个规格的二维码的最大容量是多少,再以最大容量作为每个数据块的大小将待编码数据划分为多个数据块。
S104:对每个数据块均生成同一规格的二维码。
具体的,根据所述三个数据块信息生成三个同规格的二维码,按照预定顺序将所述二维码中黑色像素点分别用RGB颜色表征。进一步的,等每个数据块的二维码生成后,按顺序从第一个二维码到最后一个二维码,将二维码中黑色像素点的RGB颜色值由#000000,依次替换为#AAAAAA、#BBBBBB、#CCCCCC。
需要说明的是,二维码每个像素的值叠加,带来的是数据容量的增加,像素的值叠加具体步骤实现如下:
1、将第一个二维码中黑色像素点的RGB颜色值由#000000替换为#AAAAAA;
2、将第二个二维码中黑色像素点的RGB颜色值由#000000替换为#BBBBBB;
3、将第三个二维码中黑色像素点的RGB颜色值由#000000替换为#CCCCCC。
S106:叠加所述每个二维码像素的RGB颜色值,从而得到一个由多层二维码叠加形成的三维码。
具体的,取第一个二维码的第一个像素点的颜色值的前两位,作为三维码第一个像素点颜色值的前两位;取第二个二维码的第一个像素点的颜色值的前两位,作为三维码第一个像素点颜色值的中间两位;取第三个二维码的第一个像素点的颜色值的前两位,作为三维码第一个像素点颜色值的最后两位;从而获得三维码第一个像素点的六位RGB颜色值,以上述方式,依次生成三维码所有像素点的颜色值。
进一步的,三个二维码每个像素的值叠加,叠加后每个像素点RGB值的第1、第2位取自第一个二维码对应的像素点颜色值AA,第3、第4位取自第二个二维码对应像素点颜色值BB,第5、第6位取自第三个二维码对应像素点颜色值CC。如叠加后某个像素点的RGB颜色值为#FFAABB,则代表第一个二维码的像素点颜色值为#FFFFFF,第二个二维码的像素点颜色值为#AAAAAA,第三个二维码的像素点颜色值为#BBBBBB,最终输出一个彩色的三维码。需要说明的是,三维码规格同二维码规格,从21x21(版本1),到177x177(版本40),每一版本符号比前一版本每边增加4个模块,本发明不对二维码规格进行限定。
实施例2
如图2所示,本实施例提供一种基于颜色的堆叠式的三维码编码装置,包括:
数据分割模块10,用于获取待编码数据,将所述待解码数据按照预定规格分块,生成数据块;具体的,计算所述待解码数据中每个数据块信息的容量;当所述数据块信息的容量符合阈值,将所述带编码的数据块信息平均分成三个数据块。
二维码生成模块20,用于将每个数据块均生成同一规格的二维码;具体的,根据所述三个数据块信息生成三个同规格的二维码,按照预定顺序将所述二维码中黑色像素点分别用RGB颜色表征。
像素叠加模块30,用于叠加所述每个二维码像素的RGB颜色值,从而得到一个由多层二维码叠加形成的三维码。具体的,将叠加后每个像素点的RGB值的第1、第2位取自第一个二维码对应的像素点颜色值,第3、第4位取自第二个二维码对应像素点颜色值,第5、第6位取自第三个二维码对应像素点颜色值。
实施例3
如图3所示,本实施例提供一种基于颜色的堆叠式的三维码解码方法,包括:
S202:获取三维码图像信息,在所述三维码图像信息中的每个像素中剥离出堆叠的二维码的像素值。具体的,本实施例的三维码图像信息,是由实施例1的方法编码而来。读取所述三维码图像信息中每个像素点的RGB颜色值,以RGB颜色值的第1、第2位作为解码的第一个二维码的像素点颜色值,以RGB颜色值的第3、第4位作为解码第二个二维码的像素点颜色值,以RGB颜色值的第5、第6位作为解码第三个二维码的像素点颜色值。
S204:根据所述二维码的像素值,输出二维码图像信息。
S206:读取所述二维码图像信息,输出数据。具体的,解析二维码图像信息,获得解析结果,将所述解析结果拼凑成一个完整的字符串,并输出。
实施例4
如图4所示,本实施例提供一种基于颜色的堆叠式的三维码解码装置,包括:
像素剥离模块60,用于获取三维码图像信息,在所述三维码图像信息中的每个像素中剥离出堆叠的二维码的像素值;具体的,读取所述三维码图像信息中每个像素点的RGB颜色值,以RGB颜色值的第1、第2位作为解码的第一个二维码的像素点颜色值,以RGB颜色值的第3、第4位作为解码第二个二维码的像素点颜色值,以RGB颜色值的第5、第6位作为解码第三个二维码的像素点颜色值。
二维码输出模块70,用于根据所述二维码的像素值,输出二维码图像信息
解析模块80,用于读取所述二维码图像信息,输出数据。具体的,解析二维码图像信息,获得解析结果,将所述解析结果拼凑成一个完整的字符串,并输出。
实施例5
本实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行实施例1和/或实施例2所述的方法。
具体的,所述计算机可读存储介质可以是前述实施例所述的终端的内部存储单元,例如终端的硬盘或内存。所述计算机可读存储介质也可以是所述终端的外部存储设备,例如所述终端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述计算机可读存储介质还可以既包括所述终端的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述终端所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露终端和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。