在我看来,当为动态数据可视化编写代码时,我最终会在不同的语言/平台上一遍又一遍地做同样的事情。现在,如果我有一种跨平台语言(我确实有)和SVG的二进制版本之类的东西,我可以使我的代码以此为目标,并为我当前需要使用它的任何平台使用/创建解释器。
我不想要SVG的原因是因为纯文本部分对我来说太慢了。当然,我可以创建我自己的中间格式,但是如果已经有一些东西已经由各种东西实现了,那么我的工作就会更少!
发布于 2017-07-08 05:09:57
根据你所说的“太慢”的意思,答案会有所不同:
文件大小太大
正式来说,SVG最接近二进制格式的东西是SVGZ,它是一个带有.svgz扩展名的压缩SVG文件。在*nix系统上制作一个All conforming SVG viewers should be able to open it.是很简单的:
gzip yourfile.svg && mv yourfile.svg.gz yourfile.svgz您还可以尝试Brotli compression,它的文件大小往往较小,但需要更多的压缩时间。
包含其他资产是低效的
SVG只能通过base64 encoding捆绑位图和其他二进制数据,这具有相当大的开销。
PDF可以包含原始二进制数据的“流”,并且以编程方式生成时效率惊人。
解析文本数据花费的时间太长
这很棘手。PDF和它的兄弟Encapsulated PostScript也是老式的、支持良好的矢量图形格式。不幸的是,它们的核心也是文本,带有可选的压缩。
您可以尝试Computer Graphics Metafiles,它可以提前编译。但我不确定它们在消费类设备上的支持率有多高。
发布于 2021-08-13 04:53:49
来自一条评论:
除了通过网络发送它的传输成本之外,几乎没有什么关于SVG的性能是由于它是明文的。
不,那是完全错误的。我在CSIRO工作,使用XML处理海量3D模型。GeoScience澳大利亚公司对解析速度进行了正式研究-与读取4或8字节的二进制表示相比,从文本中解析浮点数对于大数据集来说相对昂贵。
我花了很多时间为Touchgram优化我的内部二进制格式,现在我正在研究矢量艺术。
您可以使用的一种技术组合是
按整数表示的比例对点进行
序列
这可能会产生每个步骤通常只使用1或2个字节的路径,而不是典型的12个字节。
考虑一条基本的行<polyline class="Connect" points="100,200 100,100" />
我可以用4个字节而不是53个字节来表示。
到目前为止,我在二进制SVG中所能找到的就是链接到the project description和repo的this post about a Go project
发布于 2020-04-16 16:40:30
Adobe Flash SWF文件可能会起作用。由于它以前无处不在,“播放器”和库都是为许多平台编写的。规范是开放的,并且许可许可。对于简单的2D图形,更早的、更兼容的版本就可以了。
这些文件是二进制的,而且非常小。
https://stackoverflow.com/questions/31328320
复制相似问题