PS编辑svg文件 生成svg路径 快速导出SVG文件方法

115,946 次浏览次阅读

共计 2628 个字符,预计需要花费 7 分钟才能阅读完成。

原创文章,转载请注明: 转载自cnorg.12hp.de

注意:由于网站空间位于国外,建议避开晚上的访问高峰期,以免因访问缓慢而影响你的使用体验。

若下载链接为空,是由于国外空间速度缓慢,引发缓存问题所致。请私信本站反馈!

最近需要修改 SVG 图片,有些很简单的图标,其实是可以通过 SVG 绘制的,一般编辑 svg 需要用 Adobe Illustrator,但是因为电脑上只安装了 PS,也懒得再安装一个消耗那么大的软件,所以想着能不能使用 PS 完成这件事。

对于 SVG 文件的输出,比较常规的做法是在 PS 里做完之后导出到 AI,之后生成 SVG,经常需要将文件在 PSD-AI-SVG 中来回折腾,相当麻烦;后来出了一款比较简单的脚本,叫作“save-ps-to-svg1.0.jsx”,可以在修改文件名之后将 SVG 文件右击直接快速导出。https://gist.github.com/reficedev/f20398d301014bfd10d6 最新版本,随时关注 github

PS 可以直接打开 SVG 格式文件,但是打开后会把矢量图都进行栅格了。所以需要把他转成 svg 路径

网上关于 PS 直接导出 svg 路径的文章很少,而且基本上都是相互抄,并且语焉不详,没些踩坑的耐性很难看明白到底说的什么,不过好在最终都被我一一解决了,整理如下。

脚本文件

首先,需要下载一个脚本文件 save-ps-to-svg1.0.jsx,关于此文件的最新信息,可以到 官网查看,将此文件放到 PS 安装目录下的 /Presets/Scripts 文件夹中,如果放置脚本的时候 PS 是打开状态,那么可能需要重启一下。

PS 绘制

  • 搞定好脚本之后,打开 PS,新建图层:

PS 编辑 svg 文件 生成 svg 路径 快速导出 SVG 文件方法

PS 编辑 svg 文件 生成 svg 路径 快速导出 SVG 文件方法

  • 图层新建好后,就可以绘制了

不过这里需要注意的是,无论使用什么工具,想要转换成 SVG 路径,那么都必须要是使用 形状工具 绘制出来的图像才可以,PS 中的形状工具很好找,下面的几个都是:

PS 编辑 svg 文件 生成 svg 路径 快速导出 SVG 文件方法

这里演示是使用 自定义形状工具,选择了一个气泡形状,在图层上拉一下,画出一个简单气泡:

PS 编辑 svg 文件 生成 svg 路径 快速导出 SVG 文件方法

PS 编辑 svg 文件 生成 svg 路径 快速导出 SVG 文件方法

  • 保存文件

保存整个文件,使用默认设置即可:

PS 编辑 svg 文件 生成 svg 路径 快速导出 SVG 文件方法

  • 导出 svg 路径

文件保存好后,接下来才能对图层进行转化,鼠标在图层的名称上双击,重命名为以 .svg 为后缀结尾的名字,例如 tosvg.svg:

PS 编辑 svg 文件 生成 svg 路径 快速导出 SVG 文件方法

重命名完毕后,依次点击 文件–> 脚本–>Save as SVG,即可在保存 psd 文件的相同目录下输入一份以 .svg 结尾的文件:

PS 编辑 svg 文件 生成 svg 路径 快速导出 SVG 文件方法

目录中的 .svg 文件:

PS 编辑 svg 文件 生成 svg 路径 快速导出 SVG 文件方法

使用编辑器打开 以.svg 结尾的文件,在文档的底部,可以看到形状的 path 路径(虽然有些不规范):

PS 编辑 svg 文件 生成 svg 路径 快速导出 SVG 文件方法

图层合并

使用形状工具的时候,鼠标的每一次绘制就会产生一个图层,若是直接选中所有图层右键选择合并图层选项,那么输出的 svg 路径其实是将所有的图层一个个输出,而不是输出图层相交之后的结果。

想要输出图层相交之后的结果路径,首我们可以选中所有图层,在工具栏中选择 减去顶层形状 (或者其他选项也可以),最后点击  合并形状组件,这样一来,所有的图层才能彻底合并,使用脚本输出的路径才是合并后图层的路径。

PS 编辑 svg 文件 生成 svg 路径 快速导出 SVG 文件方法

两个问题

  • 输出的路径不规范

有时候,输出的路径会是下面这种情况:

PS 编辑 svg 文件 生成 svg 路径 快速导出 SVG 文件方法

每一条路径的后面都有一个字母,这些字母的大概含义如下:

  1. M = moveto(M X,Y):将画笔移动到指定的坐标位置
  2. L = lineto(L X,Y):画直线到指定的坐标位置
  3. H = horizontal lineto(H X):画水平线到指定的 X 坐标位置
  4. V = vertical lineto(V Y):画垂直线到指定的 Y 坐标位置
  5. C = curveto(C X1,Y1,X2,Y2,ENDX,ENDY):三次贝赛曲线
  6. S = smooth curveto(S X2,Y2,ENDX,ENDY)
  7. Q = quadratic Belzier curve(Q X,Y,ENDX,ENDY):二次贝赛曲线
  8. T = smooth quadratic Belzier curveto(T ENDX,ENDY):映射
  9. A = elliptical Arc(A RX,RY,XROTATION,FLAG1,FLAG2,X,Y):弧线
  10. Z = closepath():关闭路径

根据上述,图中 .svg 路径中的字母 m 和 L 我们都知道是什么意思了,但 Y 是什么鬼?V 为什么给了四个数字参数?

很明显,这其中定然有什么我们不确定是不是 bug 的 bug

如何解决

首先可以确定的是,那些字母是错的,但是字母前面的路径是对的。
我的方法是自己根据情况,将那些字母替换成合适的字母。

例如,我所绘制的形状是存在曲线的,二次贝赛曲线 Q 一共四个参数,所以我们可以路径中的字母 Y 和 V 换成 Q,我试了一下,确实是可行的。

  • 形状翻转

将 .svg 中给出的 path 路径整理为合乎规范的 path 路径,放到 html 文档中在浏览器中查看,然后与原图对比,左图是我们希望看到的,结果如下,右图是根据 .svg 文件中给出的路径得到的:

PS 编辑 svg 文件 生成 svg 路径 快速导出 SVG 文件方法

稍微对比一下就可以看出,右边的气泡沿着 X 轴翻转 180° 才是左边我们真正想要的。

如何解决?

我的办法是,既然右边的气泡沿着 X 轴翻转 180° 才是左边我们真正想要的,那么我们就手动把它翻转一下好了。

X 坐标是不用动的,需要我们手动变动的只有 Y 坐标,随便写个翻转 Y 坐标的 JS 函数,把 .svg 文件给出的 path 路径输入即可,JS 函数示例如下:

  1. let reversePath = (path, svgHeight)=> {
  2. let arr=path.split(' ')
  3. for(let i=0;i<arr.length; i++){
  4. i%2===1 ? arr[i] = svgHeight-arr[i] : arr[i] = +arr[i]
  5. }
  6. return arr.join(' ')
  7. }

其中 path 为路径,例如 168.9280 167.9198 164.7704 159.9623 158.2457 155.9885,如果以 0 位起始,则路径基本上都是奇数位的坐标才是 Y 坐标,所以只需要处理 i%2===1 的,而又因为是相对于整个图层翻转,所以需要知道图层的高度才行,这里的 svgHeight 就是图层的高度。
办法虽然笨了点,但一般我们常用的 svg 形状,转化为路径一般也没多少,最重要的是能够解决问题。

注意:本教程仅适用于 cs5、cs6、2015。但是其实在 PS2015 及以上版本,我们就已经有了更快更方便的方法:PS 编辑 svg 文件 生成 svg 路径 快速导出 SVG 文件方法

1. 依次打开文件 - 导出 - 到处首选项默认为 PNG 格式,下拉修改为 SVG 格式。

PS 编辑 svg 文件 生成 svg 路径 快速导出 SVG 文件方法

2. 选择形状图层,右击,找到快速导出为 SVG。

PS 编辑 svg 文件 生成 svg 路径 快速导出 SVG 文件方法

3.选择目标文件夹,保存,注意命名规范。

就是这么简单粗暴,一步到位。

最后,SVG 已经逐渐成为热门,微信也已经在移动端花大力气使用并优化了 SVG,再不学点关于 SVG 的知识,你就跟不上设计师的潮流啦。

 

资源下载

此资源仅限注册用户下载,请先

如需解压密码,关注官方微信号“心语家园“或扫描下面的微信公众号二维码,发送解压密码获取。默认解压密码即最新密码,如密码无效,可尝试其他密码。如果链接失效或者需要安装密码,仅能通过唯一通道,左下方菜单“私信本站”联系管理员补链或者提供安装密码。代收款渠道非本站所有,请勿浪费钱

免责声明:

根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供本站会员用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,禁止分享或传播。需在 24 个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

正文完
 0

扫一扫关注公众号和捐赠

自由家园
版权声明:本站原创文章,由 自由家园 于2025-08-01发表,共计2628字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。