点击上传,或把一个 SVG 拖进来
一个 SVG —— 在浏览器里读取并换色,绝不上传关于修改 SVG 的颜色
SVG 就是文本。在它里面的某个位置,有个图形写着 fill="#1f2937",这就是那个图标为什么是深灰色的全部原因。把这七个字符改掉,图标想是什么颜色就是什么颜色。
麻烦的是找到它们。Illustrator 或 Figma 真正导出的文件不会把颜色放在一个显眼的地方 —— 它把颜色分散在 fill 属性、style 属性、塞满类规则的 <style> 块,以及渐变里的色标中。用文本编辑器打开,你就得在一千行里翻找那要紧的十一行。
这个工具会读完整个文件,把用到的颜色全都收集起来,列成一张表。 改动一行右边的颜色,所有用这个颜色的图形都会跟着变,而且你一选,「修改后」那张图就跟着变。返回给你的,是颜色值换过、其余一概没动的原文件。
改颜色的两种方式
- 按颜色改 —— 两张图下面的表格列出了文件里所有不同的颜色:左边是原来的颜色,右边是改成什么。每一行默认都和原色相同,所以在你动手之前什么都不会变。改其中一个,它的所有用处一起变。「把蓝色的部分改成绿色」,或者把图标换成品牌配色,用的就是这个。
- 按图形改 —— 点中图里任何一个图形,就只改它,哪怕它和另外二十个共用一个颜色。它的填充和描边会拿到自己的值,其他什么都不动。
两种方式可以配合:先把整体配色定好,再去修那个必须不一样的图形。
全部改成同一个颜色
这是最常见的一件事。图标拿到手是五档灰,但你需要一个纯白的放在深色页头上,或者一个纯黑的用来印刷,或者一个品牌色用在一排按钮上。
选好颜色,点「应用」,文件里所有颜色都会变成这一个。没有填充的图形仍然没有填充,所以描边还是描边,镂空还是镂空。
它会去哪里找颜色
- 写成属性的 fill 和 stroke
- style 属性里同样的那些属性
- <style> 块 —— 像 .cls-1 { fill: #231f20; } 这样的类规则,Illustrator 几乎每一次导出都是这么写的
- 渐变里的 stop-color,所以渐变可以一个色标一个色标地改
- 滤镜上的 flood-color 和 lighting-color
CSS 允许的各种写法都能识别 —— #f00、#ff0000、rgb(255,0,0)、rgba(255,0,0,.5),以及 red、darkslategray 这类名称。透明度会保留:半透明的图形换了颜色以后还是半透明。
它不会动的东西
- 渐变和图案本身。 渐变里的色标可以改;渐变本身不会被压成一个平涂色,用 url(#pattern) 填充的图形也会原样保留。
- 嵌进去的位图。 贴在 SVG 里的 PNG 是照片,不是图形,它没有填充可改。那种情况请用 图片取色 或图像编辑软件。
- 一切不是颜色的东西。 不透明度、线宽、变换和文字,进去什么样出来还是什么样。
不上传任何文件
文件是在你的浏览器里读取、换色和重写的,绝不会到达服务器。如果这个文件是还没发布的 logo、客户的品牌标识,或者签了保密协议的作品,这一点就很重要。
这也意味着不用等上传、没有大小限制,而且页面加载完之后断网也能继续用。
有一个「什么都不改」的例外是有意为之的:如果文件里含有 <script> 块,它会被移除,页面也会告诉你。图片没有理由随身带着可执行代码,而这个工具必须把文件画出来才能给你看。
人们用它来做什么
- 不打开设计软件,就把一整套图标换成品牌配色
- 把 logo 改成纯白放在深色页头上,或者改成纯黑拿去印刷
- 修正颜色出错的那一个图形
- 做出同一张图的浅色版和深色版
- 不重建渐变,只改渐变的色标
- 快速试色,因为你一选,图就跟着变
需要知道的事
- 两个预览分别是修改前和修改后,用同一个比例绘制;右边那个就是真正的文件,所以你看到什么,下载下来就是什么
- 针对单个图形的修改,能用普通的 fill / stroke 属性就用属性;只有当文件里的 <style> 规则会盖过它时,才写成内联 style —— 工具会去核实实际结果,而不是靠猜
- 颜色按值归类,所以 #FFF、#ffffff 和 white 是同一行
- 每一行都有自己的撤销,点恢复所有颜色可以让整个文件回到刚打开时的样子
- 有几百种颜色的文件几乎一定是描摹的照片;只列出用得最多的那些
- 要裁掉结果周围的空白,请用 SVG 裁剪
- 要把结果变成 PNG,请用 SVG 转 PNG
怎么用
- 点击点击上传,或者把 SVG 拖到方框上
- 文件里的每种颜色都会成为表格里的一行,左边是原来的颜色
- 设置右边的颜色 —— 用取色器,或者直接输入十六进制值 —— 就能改掉它所有出现的地方
- 或者点「修改后」那张图里的某个图形,只改它一个
- 想要纯色版本就用全部改成同一个颜色
- 点击下载 SVG,或者用复制 SVG 代码直接粘进页面