可缩放矢量图形的压缩、绘制方法及装置的制造方法_2

文档序号:9668211阅读:来源:国知局
r>[0126] 本公开的实施例提供的技术方案可以包括以下有益效果:
[0127] 本公开中,SVG的文件源码中记录有图形元素的绘制信息,通过将图形元素的绘制 信息转换为数字,能获得数字格式的图形元素的绘制信息;由于将绘制信息采用数字表示, 使得压缩后SVG文件能减少SVG的占用空间,减少资源浪费。
[0128] 本公开中,由于编码规则中记录有图形元素与开始标记和结束标记的对应关系, 因此可以利用开始标记和结束标记区分SVG文件中的不同的图形元素,有利于在对压缩文 件进行解析时区分不同的图形元素。
[0129] 本公开中,编码规则中记录有图形元素名与数字的对应关系、属性名与数字的对 应关系,以及属性值的数据类型与数字的对应关系,因此可以根据上述关系将图形元素名、 属性名、属性值的数据类型和属性值编码成对应的数字,编码规则为文件源码中不同含义 的字符串设置对应的数字,因此压缩文件中的数字能表示图形元素的绘制信息,有利于对 压缩文件的解码。
[0130] 本公开中,当源码中涉及引用时可以创建引用关系,引用关系为包括索引与引用 对象标识的对应关系,因此,可将引用对象的源码替换为索引进行编码,从而减少压缩文件 的占用空间。
[0131] 本公开中,将多个显示样式属性信息记录都记录在预设的目标显示样式属性中, 可以减少压缩文件的占用空间,并且压缩后的文件内容更易解析。
[0132] 本公开中,由于路径属性信息中包括命令字符和与命令字符对应的数据,根据 ASCII编码系统可以快速地将命令字符转换为数字,该方式易于实现,转换速度快。
[0133] 本公开中,通过LEB128编码格式对整型、浮点数或双精度数进行编码,可以减少 SVG压缩文件的占用字节数。
[0134] 本公开中,通过创建字符串引用关系记录索引和所述字符串在字符串池的存储位 置的对应关系,可以将字符串转换为索引进行编码,能显著减少压缩文件的占用空间。
[0135] 本公开中,可缩放矢量图形的压缩文件中包括数字格式的图形元素的绘制信息, 根据编码规则可以解码出该数字对应的图形元素的绘制信息,从而可以根据所述绘制信息 快速地绘制出图形元素,得到所述可缩放矢量图形。
[0136] 本公开中,编码规则中预设设定了图形元素的开始标记和结束标记,通过开始标 记和结束标记可以快速区分压缩文件中不同的图形元素的绘制信息;编码规则还预先设定 绘制信息与数字的对应关系,按照编码规则可以将压缩文件中的数字解码出所述图形元素 的绘制信息。
[0137] 本公开中,编码规则中记录有图形元素名与数字的对应关系、属性名与数字的对 应关系,以及属性值的数据类型与数字的对应关系,因此可以根据上述关系从压缩文件的 数字解码出相对应的图形元素名、属性名、属性值的数据类型和属性值,根据上述绘制信息 能快速地绘制出图形元素,提高可缩放矢量图形的绘制速度。
[0138] 本公开中,当根据数字解码出对象索引时,可以根据预设的对象引用关系获得与 对象索引对应的存储位置,根据该存储位置可以查找到该引用对象,从而快速地获得图形 元素的绘制信息。
[0139] 本公开中,当根据数字解码出字符串索引时,可以根据预设的字符串引用关系获 得与索引对应的存储位置,根据该存储位置可以从字符串池中获得字符串,从而快速地获 得图形元素的绘制信息。
[0140] 本公开中,通过创建系统可绘制对象抽象类的派生类的对象,可以将SVG引入智 能终端的操作系统中,将绘制信息赋值给对象中的成员函数,通过加载对象,可以利用所述 成员函数快速地绘制出图形元素。
[0141] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不 能限制本公开。
【附图说明】
[0142] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施 例,并与说明书一起用于解释本公开的原理。
[0143] 图1A是本公开根据一示例性实施例示出的一种可缩放矢量图形的压缩方法的流 程图。
[0144] 图1Β是本公开根据一示例性实施例示出的一种SVG的示意图。
[0145] 图2是本公开根据一示例性实施例示出的一种可缩放矢量图形的绘制方法的流 程图。
[0146] 图3是本公开根据一示例性实施例示出的一种可缩放矢量图形的压缩装置框图。
[0147] 图4是本公开根据一示例性实施例示出的另一种可缩放矢量图形的压缩装置框 图。
[0148] 图5是本公开根据一示例性实施例示出的另一种可缩放矢量图形的压缩装置框 图。
[0149] 图6是本公开根据一示例性实施例示出的另一种可缩放矢量图形的压缩装置框 图。
[0150] 图7是本公开根据一示例性实施例示出的另一种可缩放矢量图形的压缩装置框 图。
[0151] 图8是本公开根据一示例性实施例示出的另一种可缩放矢量图形的压缩装置框 图。
[0152] 图9是本公开根据一示例性实施例示出的另一种可缩放矢量图形的压缩装置框 图。
[0153] 图10是本公开根据一示例性实施例示出的另一种可缩放矢量图形的压缩装置框 图。
[0154] 图11是本公开根据一示例性实施例示出的一种可缩放矢量图形的绘制装置框 图。
[0155] 图12是本公开根据一示例性实施例示出的另一种可缩放矢量图形的绘制装置框 图。
[0156] 图13是本公开根据一示例性实施例示出的另一种可缩放矢量图形的绘制装置框 图。
[0157] 图14是本公开根据一示例性实施例示出的另一种可缩放矢量图形的绘制装置框 图。
[0158] 图15是本公开根据一示例性实施例示出的另一种可缩放矢量图形的绘制装置框 图。
[0159] 图16是本公开根据一示例性实施例示出的另一种可缩放矢量图形的绘制装置框 图。
[0160] 图17是本公开根据一示例性实施例示出的一种用于可缩放矢量图形的压缩装置 的框图。
[0161] 图18是本公开根据一示例性实施例示出的一种用于可缩放矢量图形的绘制装置 的框图。
【具体实施方式】
[0162] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及 附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例 中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附 权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
[0163] 在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。 在本公开和所附权利要求书中所使用的单数形式的"一种"、"所述"和"该"也旨在包括多 数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语"和/或"是指 并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0164] 应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这 些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离 本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第 一信息。取决于语境,如在此所使用的词语"如果"可以被解释成为"在……时"或"当…… 时"或"响应于确定"。
[0165] 如图1A所示,图1A是本公开根据一示例性实施例示出的一种可缩放矢量图形的 压缩方法的流程图,该方法可以用于终端中,包括以下步骤:
[0166] 在步骤101中,获取待压缩的可缩放矢量图形。
[0167] 在步骤102中,获取所述可缩放矢量图形的文件源码;所述文件源码中记录有所 述图形元素的绘制信息。
[0168] 在步骤103中,将所述图形元素的绘制信息按预设的编码规则转换为数字,获得 所述可缩放矢量图形的压缩文件。
[0169] 其中,编码规则包括绘制信息与数字的对应关系。
[0170] 本公开实施例中,终端可以为智能终端,例如可以是智能手机、平板电脑、 PDA(PersonalDigitalAssistant,个人数字助理)、电子书阅读器、多媒体播放器等等。
[0171] 其中,步骤101中,可缩放矢量图形SVG是基于可扩展标记语言,用于描述二维矢 量图形的一种图形格式。
[0172] 步骤102中,SVG采用文本来描述矢量化的图形,这使得SVG图像文件可以像HTML 网页一样具有可读性。当采用图像工具输出SVG后,可以用任何文字处理工具打开SVG图 像,并可看到用来描述图像的文件源码,文件源码通常包含一个或多个图形元素,并且包含 一系列描述点、线、简单图形、路径等基本图形元素的绘制信息,例如图形的位置、颜色、大 小等信息。只要掌握了SVG语法,就可以通过文件源码读出SVG图像中的内容。
[0173] 例如,如图1B所示,是本公开实施例示出的一种SVG的示意图,以下是该SVG的文 件源码。
[0174] < ?xmlversion=〃L0〃standalone= 〃no〃 ? >
[0175] 〈丨DOCTYPEsvgPUBLIC"-//W3C//DTDSVG1. 1//EN"
[0176] "http://www.w3.org/Graphics/SVG/Ll/DTD/svgll.dtd">
[0177] 〈svgwidth= "100%"height= "100%"version= "1. 1〃
[0178] xmlns= 〃http://www.w3.org/2000/svg">
[0179] < !-Γmcomment->
[0180] 〈circlecx= 〃100"cy= 〃50"r= "40"stroke= "black"
[0181] stroke-width= 〃2"fill="redV>
[0182] 其中,第一行包含了XML声明。standalone属性规定此SVG文件是否是"独立的", 或含有对外部文件的引用。standalone= "no"意味着SVG文档会引用一个外部文件。在 这里,外部文件是指DTD文件。
[0183] 第二和第三行引用了这个外部的SVGDTD文件。该DTD文件位于"http://www. w3.org/Graphics/SVG/1. 1/DTD/svgll.dtd"。也即表示,该DTD文件位于W3C,含有所有W3C 允许的SVG元素。
[0184] 从第四行代码的〈svg>开始,即表示SVG中图形元素的绘制信息,代码中包括开启 标签<svg>和关闭标签</svg>,〈svg>是指根元素。width和height属性可设置此SVG文 档的宽度和高度。version属性可定义所使用的SVG版本,xmlns属性可定义SVG命名空 间。
[0185] 〈circle〉标签用来创建一个圆,即表示圆图形元素。cx属性和cy属性定义圆中 心的X和y坐标,r属性定义圆的半径。
[0186] stroke属性和stroke-width属性属于显示样式属性,用于控制如何显示形状的 轮廓。上述文件中把圆的轮廓设置为2px宽,黑色边框。
[0187] fi 11属性用于设置形状内的颜色,上述文件中把圆的填充颜色设置为红色。
[0188] 关闭标签〈/svg>的作用是关闭SVG元素和文档本身。
[0189] 对于步骤103,可以将图形元素的绘制信息按预设的编码规则转换为数字,其中, 图形元素的绘制信息可以是SVG的文件源码中从开启标签<SVg>和关闭标签</SVg>部分 的源码,文件源码中涉及声明等内容的头三行源码,可以忽略不进行编码;在编码时,SVG 文件中的常见字符串,例如width、circle或height等字符串,可以预先设定对应的数字作 为编码规则,从而按照编码规则将所述图形元素的绘制信息转换为对应的数字。其中,还可 以预先设定数字的进制,例如二进制、十六进制等。
[0190] 由上述实施例可见,SVG的文件源码中记录有图形元素的绘制信息,通过将图形元 素的绘制信息转换为数字,能获得数字格式的图形元素的绘制信息;由于将绘制信息采用 数字表示,使得压缩后SVG文件能减少SVG的占用空间,减少资源浪费。
[0191] 在一个可选的实现方式中,所述编码规则还包括图形元素与开始标记和结束标记 的对应关系,所述开始标记和结束标记分别用于在编码时表示图形元素的绘制信息的开始 和结束。
[0192] 所述将所述图形元素的绘制信息按预设的编码规则编码为数字,包括:
[0193] 根据所述图形元素与开始标记和结束标记的对应关系,获得所述图形元素对应的 开始标记和结束标记。
[0194] 根据所述绘制信息与数字的对应关系,获得所述绘制信息对应的数字。
[0195] 记录所述开始标记和结束标记,并在所述开始标记和结束标记之间记录所述绘制 信息对应的数字。
[0196] 本公开提供的实施例中,对于SVG的文件源码,可以包括一个图形元素,也可以同 时包括多个图形元素,每个图形元素具有对应的绘制信息。例如,图1B所示的SVG文件中 包含一个svg根元素的绘制信息,以及一个circle图形元素的绘制信息。为了能在压缩文 件中区分图形元素,可以预先设定图形元素的开始标记和结束标记,例如,可以用数字1表 示图形元素开始,用数字3表示图形元素结束。其中,各种图形元素的开始标记和结束标记 可以都相同,也可以对每种图形元素设定不同的开始标记和结束标记,开始标记和结束标 记的具体形式可以根据实际需要而设定,本公开实施例对此不作限定。
[0197] 其中,在编码时,SVG文件中会涉及一些常见的字符串,例如width、circle或 height等字符串,可以预先设定绘制信息与数字的对应关系作为编码规则,按照编码规则 可以将所述图形元素的绘制信息快速转换为对应的数字。
[0198] 在编码时,可以记录所述开始标记和结束标记,并在所述开始标记和结束标记之 间记录所述绘制信息对应的数字,最终获得的一串数字即为SVG的压缩文件。
[0199] 由上述实施例可见,由于编码规则中记录有图形元素与开始标记和结束标记的对 应关系,因此可以利用开始标记和结束标记区分SVG文件中的不同的图形元素,有利于在 对压缩文件进行解析时区分不同的图形元素。
[0200] 在一个可选的实现方式中,进一步的,所述绘制信息包括图形元素名和图形元素 的属性信息,所述属性信息包括属性名、属性值的数据类型和属性值。
[0201] 所述绘制信息与数字的对应关系包括:图形元素名与数字的对应关系、属性名与 数字的对应关系,以及属性值的数据类型与数字的对应关系。
[0202] 所述根据所述绘制信息与数字的对应关系,获得所述绘制信息对应的数字,包 括:
[0203] 根据所述图形元素名与数字的对应关系,获得所述图形元素名对应的数字。
[0204] 根据所述属性名与数字的对应关系,获得所述属性名对应的数字。
[0205] 根据所述属性值的数据类型与数字的对应关系,获得所述属性值的数据类型对应 的数字。
[0206] 所述在所述开始标记和结束标记之间记录所述绘制信息对应的数字,包括:
[0207] 在所述开始标记和结束标记之间记录所述图形元素名对应的数字、属性名对应的 数字和属性值的数据类型对应的数字和所述属性值。
[0208] 本公开实施例中,由SVG的文件源码可知,图形元素的绘制信息可以包括标签以 及包含在标签内部的内容,它构成了文件的主要结构,SVG文件表达的数据信息都包含在图 形元素及其属性中。属性可以使用"名称=值"的形式来描述图形元素的信息,属性依附于 图形元素存在。
[0209] 例如,仍以图1B所示的SVG文件为例进行说明,若该SVG文件源码的绘制信息按 照节点进行划分,节点可以包括元素、属性、文本、注释及文档根元素等。
[0210] 元素:如〈8¥8>....〈/8¥8>,〈(^1^]^"/>就是一个元素。形式为"〈[仙1116]>,"〈/ [name]〉"格式的字符串,及其被包围的内容,就是一个元素。其中[name]是由字母、数字、 下划线、"以及汉字等组成的字符串。它的简写模式是〈[name]/〉。
[0211] 属性:一个元素可以包含若干属性,属性包括属性名、数据类型和属性值。属性的 声明从元素的定义开始,由元素名和元素值组成。其形式为[key] =" [value]",key是由 元素[name] -样的字符串组成,[value]需要用双引号或者单引号包围,可以是任意字符。 属性必须和元素写在一起,形式为〈[name] [keyl] =" [valuel] "[key2] =" [value2] "... >
[0212] 文本(图IB的SVG文件源码未示出有关文本的代码):被元素包围的内容,即 〈[name]〉[text]〈/[name]〉中[text]部分,就是文本的内容。
[0213] 注释:以〈!一开头和一> 结尾包含的内容,就是注释的内容。
[0214] 文档根元素:就是xml文档的最外层元素。对于SVG文档,根元素总是"svg"。
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1