是否可以将 .Sketch 文件转换为 .SVG?
Posted
技术标签:
【中文标题】是否可以将 .Sketch 文件转换为 .SVG?【英文标题】:Is it possible to convert a .Sketch file to an .SVG? 【发布时间】:2014-10-03 04:24:56 【问题描述】:是否可以在没有 Sketch 或 DrawIt 的情况下将 Sketch 文件转换为 SVG?我知道这在理论上是可能的,因为它们都是矢量,但我使用 Windows 和 Linux,所以我没有 Mac 来打开文件。
【问题讨论】:
我查看并没有找到 .sketch 文件的文件规范。因此,如果不首先对文件格式本身进行逆向工程,就不可能做到这一点。您应该联系他们的官方支持渠道并索取文件格式规范;或要求与平台无关的转换桥(我怀疑他们的开发人员不会知道或关心如何编写,因为"Sketch relies on a lot of technology that is exclusive to OS X",不管这些是什么神奇的技术)所以我对你并不乐观。对不起:( 【参考方案1】:Figma 目前任何人都可以免费注册并支持 Sketch 导入和 SVG 导出。它是一个基于浏览器的全功能设计工具,因此它应该适用于所有三个主要平台(OS X、Windows 和 Linux)。从 Sketch 导入文件并不是与 Figma 完美的一对一映射,因为这两个应用程序的功能集略有不同,但它应该能让你完成 99% 的工作。
【讨论】:
你拯救了我的一天,谢谢! Figma 非常适合我。【参考方案2】:“使用大量 OS X 独有技术的 Sketch”并没有什么“魔力”。 Sketch 制造商网站上的声明是在他们不打算在 Linux 和 Windows 上提供 Sketch 应用程序的背景下。
你遇到的真正问题如下:-
sketch
文件是一个 sqlite3 文件,其中有(目前在撰写本文时)两个表,meta
和 payload
。 payload
表是单个键值存储,存储 main
和 BLOB
值。所以这就是你卡住的地方 - 如果你没有 Sketch 程序,你将不得不弄清楚如何对 BLOB
进行逆向工程。
另一方面,如果您确实有 Sketch 程序,则无需进行任何逆向工程,您可以使用 Sketch 插件 API 从您的 Sketch 文件中查询信息,此处有详细记录 - http://bohemiancoding.com/sketch/support/developer/ - 这将如果您有一个复杂的设计工作流程,可以让您自动化很多任务。 http://zeplin.io 是一个简单的 Sketch 插件示例,它从设计师创建的草图画板上为开发人员提取相关的“规范”信息。
但回到您最初的问题,Sketch 本身允许您导出 SVG 文件,但前提是您拥有 Sketch 应用程序。长话短说,除非您对草图文件中的 BLOB 二进制文件进行反向工程(或使用其他人创建的工具),否则如果没有 Sketch 应用程序,您将无法以编程方式将草图文件转换为 SVG 文件。
【讨论】:
payload
表中的BLOB
是一个bplist
对象(Apple 二进制plist),您可以使用github.com/cclgroupltd/ccl-bplist 和两行代码打开它(参见那里的自述文件)。此时,您可以在“明文”文本中看到矢量图形结构(ccl_bplist 将其加载为 python 字典)。您需要找到与 SVG 匹配的内容,并且那里有一个转换器。由于它是文本,您至少可以猜测您的方式,并在您手上花费一点时间使其工作。
此信息现已过时:Sketch 43 引入了一种新的文件格式,它本质上只是 zip 存档中的一些 json 文件。他们还提供了一个用于处理新文件格式的 javascript API,您可以在此处阅读:developer.sketchapp.com/reference/api以上是关于是否可以将 .Sketch 文件转换为 .SVG?的主要内容,如果未能解决你的问题,请参考以下文章
python 用于将Sketch文件转换为其他版本的python脚本。支持Sketch文件版本大于43。