CN107291476B - Canvas代码生成方法、装置、电子设备及存储介质 - Google Patents

Canvas代码生成方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN107291476B
CN107291476B CN201710504347.3A CN201710504347A CN107291476B CN 107291476 B CN107291476 B CN 107291476B CN 201710504347 A CN201710504347 A CN 201710504347A CN 107291476 B CN107291476 B CN 107291476B
Authority
CN
China
Prior art keywords
attribute information
canvas
label
code
canvas code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710504347.3A
Other languages
English (en)
Other versions
CN107291476A (zh
Inventor
谢杨玲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Weiying Shidai Technology Co ltd
Original Assignee
Beijing Weiying Shidai Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Weiying Shidai Technology Co ltd filed Critical Beijing Weiying Shidai Technology Co ltd
Priority to CN201710504347.3A priority Critical patent/CN107291476B/zh
Publication of CN107291476A publication Critical patent/CN107291476A/zh
Application granted granted Critical
Publication of CN107291476B publication Critical patent/CN107291476B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • Document Processing Apparatus (AREA)

Abstract

本发明公开了一种Canvas代码生成方法,包括:获取用于生成代码的可缩放矢量图形SVG文件;基于SVG文件中各元素的标签名称、标签类型和属性信息,生成包含各元素及各元素层级关系的JSON格式的中间数据;按照各元素层级关系中从外到内及从前到后的顺序,遍历中间数据,确定与每个元素的属性信息对应的Canvas代码单元;将确定的Canvas代码单元,按照顺序进行组合,得到SVG文件对应的Canvas代码。从而实现了自动化生成Canvas代码,提高了Canvas代码的生成效率。

Description

Canvas代码生成方法、装置、电子设备及存储介质
技术领域
本发明涉及互联网技术领域中的Canvas(画布)技术领域,尤其涉及一种Canvas代码生成方法、装置、电子设备及存储介质。
背景技术
在互联网技术应用中,经常需要在呈现给用户的界面中,展示一些图形。为实现这一目的,UI设计师提供用户界面原型设计图,前端工程师负责将原型设计图转化为代码,从而还原设计。
前端工程师在转化代码时,可以采用网页画布技术,即HTML5(Hyper Text MarkupLanguage,超文本标记语言)支持的Canvas技术。在使用时,可以用浏览器支持的脚本语言Java script调用Canvas API(Application Programming Interface,应用程序编程接口),作为前端工程师还原设计的一种代码手段。
在目前的方法中,如果使用Canvas绘制设计图,前端工程师需要自己根据图形形状来确定调用的Canvas API,并手写代码,使得代码生成的效率较低。
发明内容
本发明实施例提供一种Canvas代码生成方法、装置、电子设备及存储介质,用以解决现有技术中存在的Canvas代码生成效率较低的问题。
本发明实施例提供一种Canvas代码生成方法,包括:
获取用于生成代码的可缩放矢量图形SVG文件;
基于所述SVG文件中各元素的标签名称、标签类型和属性信息,生成包含所述各元素及所述各元素层级关系的JSON格式的中间数据;
按照所述各元素层级关系中从外到内及从前到后的顺序,遍历所述中间数据,确定与每个元素的属性信息对应的Canvas代码单元;
将确定的Canvas代码单元,按照顺序进行组合,得到所述SVG文件对应的Canvas代码。
进一步的,基于所述SVG文件中各元素的标签名称、标签类型和属性信息,生成包含所述各元素及所述各元素层级关系的JSON格式的中间数据,包括:
基于所述SVG文件中各元素的标签名称、标签类型和属性信息,生成与所述各元素分别一一对应的词法单元,所述词法单元包括对应元素的标签名称、标签类型和属性信息;
按照从前到后的顺序遍历各词法单元,并根据词法单元中的标签类型为开始类型或结束类型,确定先后相邻两个词法单元之间的层级关系,得到包含所述各元素及所述各元素层级关系的JSON格式的中间数据。
进一步的,基于所述SVG文件中各元素的标签名称、标签类型和属性信息,生成与所述各元素分别一一对应的词法单元,包括:
按照已知的SVG文件结构,对所述SVG文件进行文本分割,得到所述SVG文件中各元素所包括的文本内容;
采用文本匹配技术,分别从所述各元素包括的文本内容中,解析出所述各元素的标签名称、标签类型和属性信息;
针对所述各元素中的每个元素,生成与该元素对应的包括该元素的标签名称、标签类型和属性信息的词法单元。
进一步的,在确定与每个元素的属性信息对应的Canvas代码单元之后,还包括:
将确定的与每个元素的属性信息对应的Canvas代码单元保存在数组中;
将确定的Canvas代码单元,按照顺序进行组合,得到所述SVG文件对应的Canvas代码,包括:
从所述数组中获得与每个元素的属性信息对应的Canvas代码单元;
将获得的与每个元素的属性信息对应的Canvas代码单元,按照顺序进行组合并拼接为一个字符串,以及将所述字符串写入到文本,得到所述SVG文件对应的Canvas代码。
本发明实施例还提供一种画布Canvas代码生成装置,包括:
文件获取模块,用于获取用于生成代码的可缩放矢量图形SVG文件;
中间数据生成模块,用于基于所述SVG文件中各元素的标签名称、标签类型和属性信息,生成包含所述各元素及所述各元素层级关系的JSON格式的中间数据;
代码单元匹配模块,用于按照所述各元素层级关系中从外到内及从前到后的顺序,遍历所述中间数据,确定与每个元素的属性信息对应的Canvas代码单元;
代码生成模块,用于将确定的Canvas代码单元,按照顺序进行组合,得到所述SVG文件对应的Canvas代码。
进一步的,所述中间数据生成模块,具体用于基于所述SVG文件中各元素的标签名称、标签类型和属性信息,生成与所述各元素分别一一对应的词法单元,所述词法单元包括对应元素的标签名称、标签类型和属性信息;以及按照从前到后的顺序遍历各词法单元,并根据词法单元中的标签类型为开始类型或结束类型,确定先后相邻两个词法单元之间的层级关系,得到包含所述各元素及所述各元素层级关系的JSON格式的中间数据。
进一步的,所述中间数据生成模块,具体用于按照已知的SVG文件结构,对所述SVG文件进行文本分割,得到所述SVG文件中各元素所包括的文本内容;并采用文本匹配技术,分别从所述各元素包括的文本内容中,解析出所述各元素的标签名称、标签类型和属性信息;以及针对所述各元素中的每个元素,生成与该元素对应的包括该元素的标签名称、标签类型和属性信息的词法单元。
进一步的,所述代码单元匹配模块,还用于在确定与每个元素的属性信息对应的Canvas代码单元之后,将确定的与每个元素的属性信息对应的Canvas代码单元保存在数组中;
所述代码生成模块,具体用于从所述数组中获得与每个元素的属性信息对应的Canvas代码单元;以及将获得的与每个元素的属性信息对应的Canvas代码单元,按照顺序进行组合并拼接为一个字符串,以及将所述字符串写入到文本,得到所述SVG文件对应的Canvas代码。
本发明实施例还提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-4任一所述的方法步骤。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-4任一所述的方法步骤。
本发明有益效果包括:
本发明实施例提供的方法中,在需要生成Canvas代码时,首先获取用于生成代码的SVG文件,并基于SVG文件中各元素的标签名称、标签类型和属性信息,生成包含各元素及各元素层级关系的JSON格式的中间数据,按照各元素层级关系中从外到内及从前到后的顺序,遍历该中间数据,确定与每个元素的属性信息对应的Canvas代码单元,将确定的Canvas代码单元,按照顺序进行组合,得到SVG文件对应的Canvas代码。从而实现了自动化生成Canvas代码,提高了Canvas代码的生成效率。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例提供的Canvas代码生成方法的流程图;
图2为本发明实施例提供的Canvas代码生成方法的流程图;
图3为本发明实施例提供的Canvas代码生成装置的结构示意图;
图4为本发明实施例提供的电子设备的结构示意图。
具体实施方式
为了给出提高Canvas代码生成效率的实现方案,本发明实施例提供了一种Canvas代码生成方法、装置、电子设备及存储介质,以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本发明实施例提供一种Canvas代码生成方法,如图1所示,包括:
步骤11、获取用于生成代码的SVG(Scalable Vector Graphics,可缩放矢量图形)文件。
步骤12、基于SVG文件中各元素的标签名称、标签类型和属性信息,生成包含各元素及各元素层级关系的JSON格式的中间数据。
步骤13、按照各元素层级关系中从外到内及从前到后的顺序,遍历该中间数据,确定与每个元素的属性信息对应的Canvas代码单元。
步骤14、将确定的Canvas代码单元,按照顺序进行组合,得到SVG文件对应的Canvas代码。
采用上述图1所示的Canvas代码生成方法,实现了自动化生成Canvas代码,提高了Canvas代码的生成效率。
下面结合附图,用具体实施例对本发明提供的方法及装置进行详细描述。
图2所示为本发明实施例提供一种Canvas代码生成方法的详细流程图,其中,具体包括如下处理步骤:
步骤21、获取用于生成代码的SVG文件。
在实际应用中,UI设计师常用的原型设计工具通常可以将原型图导出成SVG格式的文件。
本步骤获取SVG文件,以便通过后续步骤生成与该SVG文件对应的Canvas代码,即与该SVG文件所表示的图形对应的Canvas代码。
在获取到SVG文件之后,即可以基于SVG文件中各元素的标签名称、标签类型和属性信息,生成包含各元素及各元素层级关系的JSON格式的中间数据,具体可以包括如下步骤22和步骤23。
步骤22、基于SVG文件中各元素的标签名称、标签类型和属性信息,生成与各元素分别一一对应的词法单元,词法单元包括对应元素的标签名称、标签类型和属性信息。
SVG文件是XML(Extensible Markup Language,可扩展标记语言)格式的文件,XML文件的文本中包括多个元素(也可以称作标签),元素与元素之间存在嵌套的层级关系,并且,元素具有标签名称、标签类型和属性信息。
本步骤中,即可以通过对SVG文件的文本分割和解析,生成与各元素分别一一对应的词法单元,具体可以如下:
按照已知的SVG文件结构,对SVG文件进行文本分割,得到SVG文件中各元素所包括的文本内容;
采用文本匹配技术,分别从各元素包括的文本内容中,解析出各元素的标签名称、标签类型和属性信息;
针对各元素中的每个元素,生成与该元素对应的包括该元素的标签名称、标签类型和属性信息的词法单元。
下面举例进行描述。
将SVG文件作为纯文本,从文本的第一个字符开始,按照已知的SVG文件结构,对获取的SVG文件进行文本分割,得到元素所包括的文本内容。例如,针对SVG文件中包括的文本<path d=“M20,20”fill=“red”></path>,可以分割出元素<path d=“M20,20”fill=“red”>,以及元素</path>。
然后,通过正则表达式,从元素的文本内容中匹配出标签名,并提取出元素的属性信息(一个元素上面的″name=value″格式的字符串),以及标签类型,从而得到一个词法单元。
例如,针对上述元素<path d=“M20,20”fill=“red”>,得到如下词法单元:
Figure BDA0001333222970000071
针对上述元素元素</path>,得到如下词法单元:
Figure BDA0001333222970000072
其中type为标签类型,type有“tag-start”与“tag-end”两种类型,即开始类型和结束类型,tag则为标签名称,attribute为属性信息。
本步骤中,具体可以处理完一个元素后,从文本中相应的截断此元素对应长度的文本,然后处理下一个元素,重复此过程,直到文本的长度为0,该过程结束,得到所有的词法单元。
步骤23、按照从前到后的顺序遍历各词法单元,并根据词法单元中的标签类型为开始类型或结束类型,确定先后相邻两个词法单元之间的层级关系,得到包含各元素及各元素层级关系的JSON格式的中间数据。
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,本步骤中,基于得到的上述词法单元,生成JSON格式的中间数据,用于后续的Canvas代码单元的匹配。
本步骤中,具体可以依次遍历所有的词法单元,通过分析元素的type(标签类型),确定各元素之间的层级(嵌套)关系,并使用JSON格式的中间文件来保存解析结果。对于SVG文件的每个元素,有如下结构:
Figure BDA0001333222970000081
与上述词法单元不同的是,没了type,多了一个children用来保存子级的元素。
如果某个词法单元的type为“tag-start”,而紧接着的下一个的词法单元type不是”tag-end“而是”tag-start“,则两个该两个词法单元各自对应的元素之间存在着层级关系。我们将后面的元素,放到前面元素的children里面,依次类推。直到所有的词法单元遍历完成,就得到了包含所有元素以及元素层级关系的JSON格式的中间数据,该过程结束。
步骤24、按照各元素层级关系中从外到内及从前到后的顺序,遍历上述JSON格式的中间数据,确定与每个元素的属性信息对应的Canvas代码单元。
因为SVG文件用于表示矢量图形,而Canvas也用于绘图,因此两者存在着一定的联系。针对绘制图形的结果来看,SVG里面的某个元素可以对应于Canvas API的某种方法或者预先使用Canvas方法来模拟SVG的元素。
以SVG文件中的path元素为例:
元素<path d=″M250 150 L150 350 L350 350Z″/>,定义了一条路径,它开始于位置坐标250150,到达位置坐标150 350,然后再到达位置坐标350 350,最后到达位置坐标250 150,并关闭路径,即在绘制图形的表现上是一条闭合的线段构成的图形。
对于Canvas而言,上述例子中,SVG文件中path元素的d属性中的“M”,“L”,“Z”,有与之相近的方法,即:M对应moveTo(),L对应lineTo(),Z对应closePath()。诸如此类直接的对应关系。如果没有直接的对应关系,也可以预先使用Canvas方法类似的模拟SVG文件的元素。
本发明实施例中,可以预先建立SVG文件中元素的属性信息与Canvas代码单元之间的对应关系,并基于该对应关系,确定与每个元素的属性信息对应的Canvas代码单元。
具体过程可以如下:
按照各元素层级关系中从外到内及从前到后的顺序,遍历JSON格式的中间数据,此过程在于读取元素的tag与attribute,如果children不为空则递归遍历,即继续相同的方法向下遍历children的元素。读取attribute的属性信息,例如,path的d,基于上述对应关系,得到该元素该属性信息对应的Canvas代码单元。
本步骤中,在确定与每个元素的属性信息对应的Canvas代码单元之后,还可以将确定的与每个元素的属性信息对应的Canvas代码单元保存在数组中,以便后续的使用。
步骤25、将确定的Canvas代码单元,按照顺序进行组合,得到SVG文件对应的Canvas代码。
具体可以从上述数组中获得与每个元素的属性信息对应的Canvas代码单元,并将获得的与每个元素的属性信息对应的Canvas代码单元,按照顺序进行组合并拼接为一个字符串,以及将该字符串写入到文本,得到SVG文件对应的Canvas代码。
基于同一发明构思,根据本发明上述实施例提供的Canvas代码生成方法,相应地,本发明另一实施例还提供了一种Canvas代码生成装置,其结构示意图如图3所示,具体包括:
文件获取模块31,用于获取用于生成代码的可缩放矢量图形SVG文件;
中间数据生成模块32,用于基于所述SVG文件中各元素的标签名称、标签类型和属性信息,生成包含所述各元素及所述各元素层级关系的JSON格式的中间数据;
代码单元匹配模块33,用于按照所述各元素层级关系中从外到内及从前到后的顺序,遍历所述中间数据,确定与每个元素的属性信息对应的Canvas代码单元;
代码生成模块34,用于将确定的Canvas代码单元,按照顺序进行组合,得到所述SVG文件对应的Canvas代码。
进一步的,中间数据生成模块32,具体用于基于所述SVG文件中各元素的标签名称、标签类型和属性信息,生成与所述各元素分别一一对应的词法单元,所述词法单元包括对应元素的标签名称、标签类型和属性信息;以及按照从前到后的顺序遍历各词法单元,并根据词法单元中的标签类型为开始类型或结束类型,确定先后相邻两个词法单元之间的层级关系,得到包含所述各元素及所述各元素层级关系的JSON格式的中间数据。
进一步的,中间数据生成模块32,具体用于按照已知的SVG文件结构,对所述SVG文件进行文本分割,得到所述SVG文件中各元素所包括的文本内容;并采用文本匹配技术,分别从所述各元素包括的文本内容中,解析出所述各元素的标签名称、标签类型和属性信息;以及针对所述各元素中的每个元素,生成与该元素对应的包括该元素的标签名称、标签类型和属性信息的词法单元。
进一步的,代码单元匹配模块33,还用于在确定与每个元素的属性信息对应的Canvas代码单元之后,将确定的与每个元素的属性信息对应的Canvas代码单元保存在数组中;
代码生成模块34,具体用于从所述数组中获得与每个元素的属性信息对应的Canvas代码单元;以及将获得的与每个元素的属性信息对应的Canvas代码单元,按照顺序进行组合并拼接为一个字符串,以及将所述字符串写入到文本,得到所述SVG文件对应的Canvas代码。
上述各模块的功能可对应于图1或图2所示流程中的相应处理步骤,在此不再赘述。
本发明实施例还提供一种电子设备,如图4所示,包括处理器41、通信接口42、存储器43和通信总线44,其中,处理器41,通信接口42,存储器43通过通信总线44完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述Canvas代码生成方法步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述Canvas代码生成方法步骤。
综上所述,本发明实施例提供的方案,在需要生成Canvas代码时,首先获取用于生成代码的SVG文件,并基于SVG文件中各元素的标签名称、标签类型和属性信息,生成包含各元素及各元素层级关系的JSON格式的中间数据,按照各元素层级关系中从外到内及从前到后的顺序,遍历该中间数据,确定与每个元素的属性信息对应的Canvas代码单元,将确定的Canvas代码单元,按照顺序进行组合,得到SVG文件对应的Canvas代码。从而实现了自动化生成Canvas代码,提高了Canvas代码的生成效率。
本申请的实施例所提供的生成装置可通过计算机程序实现。本领域技术人员应该能够理解,上述的模块划分方式仅是众多模块划分方式中的一种,如果划分为其他模块或不划分模块,只要生成装置具有上述功能,都应该在本申请的保护范围之内。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (8)

1.一种画布Canvas代码生成方法,其特征在于,包括:
获取用于生成代码的可缩放矢量图形SVG文件;
基于所述SVG文件中各元素的标签名称、标签类型和属性信息,生成包含所述各元素及所述各元素层级关系的JSON格式的中间数据;
按照所述各元素层级关系中从外到内及从前到后的顺序,遍历所述中间数据,确定与每个元素的属性信息对应的Canvas代码单元;
将确定的Canvas代码单元,按照顺序进行组合,得到所述SVG文件对应的Canvas代码;
基于所述SVG文件中各元素的标签名称、标签类型和属性信息,生成包含所述各元素及所述各元素层级关系的JSON格式的中间数据,包括:
基于所述SVG文件中各元素的标签名称、标签类型和属性信息,生成与所述各元素分别一一对应的词法单元,所述词法单元包括对应元素的标签名称、标签类型和属性信息;
按照从前到后的顺序遍历各词法单元,并根据词法单元中的标签类型为开始类型或结束类型,确定先后相邻两个词法单元之间的层级关系,得到包含所述各元素及所述各元素层级关系的JSON格式的中间数据。
2.如权利要求1所述的方法,其特征在于,基于所述SVG文件中各元素的标签名称、标签类型和属性信息,生成与所述各元素分别一一对应的词法单元,包括:
按照已知的SVG文件结构,对所述SVG文件进行文本分割,得到所述SVG文件中各元素所包括的文本内容;
采用文本匹配技术,分别从所述各元素包括的文本内容中,解析出所述各元素的标签名称、标签类型和属性信息;
针对所述各元素中的每个元素,生成与该元素对应的包括该元素的标签名称、标签类型和属性信息的词法单元。
3.如权利要求1所述的方法,其特征在于,在确定与每个元素的属性信息对应的Canvas代码单元之后,还包括:
将确定的与每个元素的属性信息对应的Canvas代码单元保存在数组中;
将确定的Canvas代码单元,按照顺序进行组合,得到所述SVG文件对应的Canvas代码,包括:
从所述数组中获得与每个元素的属性信息对应的Canvas代码单元;
将获得的与每个元素的属性信息对应的Canvas代码单元,按照顺序进行组合并拼接为一个字符串,以及将所述字符串写入到文本,得到所述SVG文件对应的Canvas代码。
4.一种画布Canvas代码生成装置,其特征在于,包括:
文件获取模块,用于获取用于生成代码的可缩放矢量图形SVG文件;
中间数据生成模块,用于基于所述SVG文件中各元素的标签名称、标签类型和属性信息,生成包含所述各元素及所述各元素层级关系的JSON格式的中间数据;
代码单元匹配模块,用于按照所述各元素层级关系中从外到内及从前到后的顺序,遍历所述中间数据,确定与每个元素的属性信息对应的Canvas代码单元;
代码生成模块,用于将确定的Canvas代码单元,按照顺序进行组合,得到所述SVG文件对应的Canvas代码;
所述中间数据生成模块,具体用于基于所述SVG文件中各元素的标签名称、标签类型和属性信息,生成与所述各元素分别一一对应的词法单元,所述词法单元包括对应元素的标签名称、标签类型和属性信息;以及按照从前到后的顺序遍历各词法单元,并根据词法单元中的标签类型为开始类型或结束类型,确定先后相邻两个词法单元之间的层级关系,得到包含所述各元素及所述各元素层级关系的JSON格式的中间数据。
5.如权利要求4所述的装置,其特征在于,所述中间数据生成模块,具体用于按照已知的SVG文件结构,对所述SVG文件进行文本分割,得到所述SVG文件中各元素所包括的文本内容;并采用文本匹配技术,分别从所述各元素包括的文本内容中,解析出所述各元素的标签名称、标签类型和属性信息;以及针对所述各元素中的每个元素,生成与该元素对应的包括该元素的标签名称、标签类型和属性信息的词法单元。
6.如权利要求4所述的装置,其特征在于,所述代码单元匹配模块,还用于在确定与每个元素的属性信息对应的Canvas代码单元之后,将确定的与每个元素的属性信息对应的Canvas代码单元保存在数组中;
所述代码生成模块,具体用于从所述数组中获得与每个元素的属性信息对应的Canvas代码单元;以及将获得的与每个元素的属性信息对应的Canvas代码单元,按照顺序进行组合并拼接为一个字符串,以及将所述字符串写入到文本,得到所述SVG文件对应的Canvas代码。
7.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-3任一所述的方法步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-3任一所述的方法步骤。
CN201710504347.3A 2017-06-27 2017-06-27 Canvas代码生成方法、装置、电子设备及存储介质 Active CN107291476B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710504347.3A CN107291476B (zh) 2017-06-27 2017-06-27 Canvas代码生成方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710504347.3A CN107291476B (zh) 2017-06-27 2017-06-27 Canvas代码生成方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN107291476A CN107291476A (zh) 2017-10-24
CN107291476B true CN107291476B (zh) 2020-12-08

Family

ID=60099692

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710504347.3A Active CN107291476B (zh) 2017-06-27 2017-06-27 Canvas代码生成方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN107291476B (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107870993B (zh) * 2017-10-31 2021-02-05 成都交大光芒科技股份有限公司 一种基于svg的接触网运检修分工可视化构建方法
CN108170423A (zh) * 2017-12-27 2018-06-15 广州水木星尘信息科技有限公司 Html5共享开发平台系统模版复合数据管理方法
CN110020415B (zh) * 2018-01-09 2021-04-09 北大方正集团有限公司 图表处理方法、系统、计算机设备及存储介质
CN108763546A (zh) * 2018-05-31 2018-11-06 北京五八信息技术有限公司 一种数据格式的转换方法、装置、存储介质及终端
CN109284487B (zh) * 2018-08-28 2023-12-05 广州视源电子科技股份有限公司 在canvas中渲染数据的方法、装置、电子设备及存储介质
CN109445778A (zh) * 2018-09-13 2019-03-08 珠海豆饭科技有限公司 一种基于svg文件的界面辅助生成的方法和装置
CN109559322A (zh) * 2018-11-30 2019-04-02 迈普通信技术股份有限公司 图像处理方法、装置、存储介质及电子设备
CN109783094A (zh) * 2018-12-15 2019-05-21 深圳壹账通智能科技有限公司 前端页面生成方法、装置、计算机设备及存储介质
CN109887059A (zh) * 2019-02-26 2019-06-14 武汉斗鱼鱼乐网络科技有限公司 一种svga动画解析方法、装置及存储介质
CN110032365A (zh) * 2019-04-19 2019-07-19 广东小天才科技有限公司 一种Sketch图形文件的代码查找方法、装置及终端设备
CN110333862A (zh) * 2019-06-17 2019-10-15 深圳壹账通智能科技有限公司 Ui页面代码生成方法、装置以及服务器
CN110688116A (zh) * 2019-09-29 2020-01-14 北京字节跳动网络技术有限公司 一种图像文件的解析方法、装置、设备和可读介质
CN111475156B (zh) * 2020-04-13 2024-04-02 北京金堤科技有限公司 页面代码生成方法和装置、电子设备和存储介质
CN113535151B (zh) * 2020-04-14 2024-05-17 北京京东振世信息技术有限公司 代码生成方法和装置
CN111737196B (zh) * 2020-06-22 2023-11-10 国能日新科技股份有限公司 基于电力交易系统气象资源网格文本转矢量图方法及装置
CN112115391A (zh) * 2020-08-04 2020-12-22 合肥森亿智能科技有限公司 基于svg技术的体温单绘制方法、系统以及终端
CN112181539B (zh) * 2020-09-27 2023-12-05 深圳市元征科技股份有限公司 文件处理方法、装置、设备及介质
CN112162738B (zh) * 2020-10-26 2022-11-29 广东粤港澳大湾区硬科技创新研究院 数据转化方法、装置、终端设备及存储介质
CN113360695A (zh) * 2021-06-07 2021-09-07 深圳市道通科技股份有限公司 确定汽车相似电路图的方法、装置以及电子设备
CN113360148B (zh) * 2021-07-09 2022-04-15 上海万纬纵横科技有限公司 一种图形处理方法、装置和电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101714078A (zh) * 2008-10-06 2010-05-26 广东金宇恒科技有限公司 代码生成方法及装置
CN103226619A (zh) * 2013-05-23 2013-07-31 北京邮电大学 一种原生矢量图格式转换方法和系统
CN103617641A (zh) * 2013-12-19 2014-03-05 国家电网公司 一种基于Android系统的电力设备SVG图符渲染方法
CN104616331A (zh) * 2015-02-16 2015-05-13 百度在线网络技术(北京)有限公司 移动设备上的图像处理方法和装置
CN105513115A (zh) * 2014-10-16 2016-04-20 腾讯科技(深圳)有限公司 将SWF转化为Canvas动画的方法和装置
CN105700867A (zh) * 2014-12-11 2016-06-22 海德堡印刷机械股份公司 用于将动态可缩放矢量图形生成可执行应用程序的方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8250477B1 (en) * 2008-11-04 2012-08-21 Sensei, Inc. Mobile client application for managing user interface components
US9524273B2 (en) * 2013-03-11 2016-12-20 Oracle International Corporation Method and system for generating a web page layout using nested drop zone widgets having different software functionalities

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101714078A (zh) * 2008-10-06 2010-05-26 广东金宇恒科技有限公司 代码生成方法及装置
CN103226619A (zh) * 2013-05-23 2013-07-31 北京邮电大学 一种原生矢量图格式转换方法和系统
CN103617641A (zh) * 2013-12-19 2014-03-05 国家电网公司 一种基于Android系统的电力设备SVG图符渲染方法
CN105513115A (zh) * 2014-10-16 2016-04-20 腾讯科技(深圳)有限公司 将SWF转化为Canvas动画的方法和装置
CN105700867A (zh) * 2014-12-11 2016-06-22 海德堡印刷机械股份公司 用于将动态可缩放矢量图形生成可执行应用程序的方法
CN104616331A (zh) * 2015-02-16 2015-05-13 百度在线网络技术(北京)有限公司 移动设备上的图像处理方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
svg图转canvas,完全阔以的;黑夜蓝天;《博客园 https://www.cnblogs.com/1rookie/p/7082883.html》;20170626;1 *

Also Published As

Publication number Publication date
CN107291476A (zh) 2017-10-24

Similar Documents

Publication Publication Date Title
CN107291476B (zh) Canvas代码生成方法、装置、电子设备及存储介质
CN113609820B (zh) 基于可扩展标记语言文件生成word文件的方法、装置及设备
CN106484408A (zh) 一种基于html5的节点关系图显示方法及系统
Vyshnavi et al. Efficient way of web development using python and flask
CN105095067A (zh) 用户界面元素对象识别及自动化测试的方法和装置
CN108958725B (zh) 图形化模式编程平台生成方法、装置及计算机设备
CN104932889A (zh) 页面可视化生成方法和装置
CN109658485B (zh) 网页动画绘制方法、装置、计算机设备和存储介质
CN108595171B (zh) 对象的模型生成方法、装置、设备及存储介质
CN109492177B (zh) 一种基于网页语义结构的网页分块方法
CN110378986B (zh) 一种习题演示动画生成方法、装置、电子设备和存储介质
CN109934218A (zh) 一种针对物流单图像的识别方法及装置
CN114594927A (zh) 低代码开发方法、装置、系统、服务器及存储介质
CN112328246A (zh) 页面组件生成方法、装置、计算机设备及存储介质
CN115454423A (zh) 静态网页的生成方法、生成装置、电子设备及存储介质
CN104375814A (zh) 接口文档的生成方法及装置
CN113139033B (zh) 文本处理方法、装置、设备及存储介质
US20240127510A1 (en) Stylized glyphs using generative ai
CN109726346B (zh) 页面组件处理方法及装置
CN110633251B (zh) 一种文件转换方法及设备
CN116009863B (zh) 前端页面渲染方法、设备及存储介质
CN108664511B (zh) 获取网页信息方法和装置
CN113283241B (zh) 文本识别方法、装置、电子设备及计算机可读存储介质
CN115373658A (zh) 一种基于Web图片的前端代码自动生成方法和装置
CN111444456B (zh) 一种样式编辑方法、装置及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant