【转】小谈PNG转SVG的方法 在线转换网站与illustrator

转自:https://www.aspirantzhang.com/network/png_to_svg.html

本文主要探讨JPG/PNG转SVG矢量格式并支持FILL的方法,介绍在线转换网站和通过illustator转换的经验。

应该说,国内网站很少用到SVG格式,在此之前我只是听过,而没有用过。前些天遇到一个外国网站,在重要的动画位置使用了SVG图片,当我想修改的时候发现里面大有乾坤,分享一下感想和经验。前提我想说,SVG格式适用于如LOGO、图标这类颜色并不多的图,颜色太鲜艳图还是谨慎为好。

注:本文中使用的illustrator版本为Adobe Illustrator CC 2017,其他版本未测试。

初探和原理

右键打开SVG文件一看,<svg>和一堆<path>标签映入眼帘,原理看起来像一张白纸,然后用path来画出路线,用fill属性来填充每个区域的颜色,从而实现矢量缩放。很神奇,关键是大小和颜色可以随便改,用css或者js可以直接控制图形的颜色和大小,这个操作太给力了,在部分场景非常实用。

不过,我随便找了一张png图像,用Photoshop打开,发现也可以到处为svg格式。但是用PS导出的SVG,我看了代码,完全是另一片天地。简单来说就是一个<image>标签里面包着一个base64编码的图片,这样的话我就不能改颜色了呀,这我要你何用!

所以SVG可能有两种形式:

  1. 真SVG:<svg>+<path>+fill属性的组合
  2. 假SVG:<image>+base64图片

在线转换 适用于颜色较单一的图片

网络中,大部分JPG/PNG转SVG都转出的是假SVG(这里说的假SVG是我个人意念,非专业术语)。然而如果我们想得到一个真正的矢量svg时,需要得到真SVG编码。我找寻了国外网站,仅找到两个:

http://www.pngtosvg.com/  免费 功能单一 测试过,可以用 颜色选的一个

https://vectormagic.com/    收费还挺贵,功能强大

这里要注意的是,由于SVG是画出来的,颜色越多,代码越多。所以如果颜色较为单一时(如5个颜色以下),用在线转换网站已可以满足要求,但如果渐变图片就头疼了。我找了一张颜色较为单一的google图,和一张有渐变的chrome图做对比。

谷歌图看起来还行,也就是缺了点感觉。chrome就有点惨不忍睹了。

所以真的颜色较多的时候,或者真有个渐变,那么下面介绍的Illustrator可能更好用一点。

使用Adobe Illustrator编辑后导出SVG

首先,只要jpg或者png图片没有太小,比如宽高都大于200px,并且没有阴影等乱七八糟的效果,我认为用Illustrator就可以做出比较好的矢量SVG。操作流程如下:

1. 用Illustrator打开JPG/PNG图片。

2. 点击图片,进入选择状态,上面的工具栏点击“图像描摹”右侧的下拉箭头,选择“高保真度图片”。

这时无敌的illustrator已经把普通jpg/png转换成了矢量图。但还有一个问题,就是仔细观察的话,这个图是有白色背景的。如果你恰好需要这个背景那太好了,否则我们必须把这个背景弄掉。

3. 打开描摹面板。两种方法,第一种,点击工具栏上的按钮。第二种,右上角切换工作台模式。二选一,如图:

 

4. 展开高级,方法选择第一个“临接(创建木刻路径)”,选项勾选“忽略白色”,看图就明白了:

这时拖到外侧看一下图片背景,没了就对了。如果还有,我没招了。

5. 菜单栏选择文件->导出->导出为…,选择保存路径后,跳出SVG选项卡,样式部分我一般选择内部CSS,其他默认值。 OVER.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435818.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅聊在美找工作以及工作之后的感受

此贴并不是炫耀我在美帝工作如何如何&#xff0c;而是仅仅想把这几个月的生活记录下来。在国内读完大学&#xff0c;不想找工作&#xff0c;又不想读国内的研究生&#xff0c;所以跟随大流&#xff0c;来到美帝读master。 在一个算不错的学校读完之后&#xff0c;来到加州硅谷找…

【转】最为详尽的WPF类继承关系*!

转自&#xff1a;最为详尽的WPF类继承关系 - 挑战 - 博客园

C/C++中“空语句”的说明

最近我的同事和一些网友都说C/C中“空语句”&#xff08;就是单独一个分号的语句&#xff09;具有延时的作用&#xff0c;可以用来写延时代码。其实这是一种错误的理解。 首先&#xff0c;有人认为空语句经编译后&#xff0c;生成汇编代码是“NOP”指令,NOP指令是空操作指令&am…

.netframework3.5 中TimeZoneInfo 类的使用

.net famework3.5中新增加了一个关于时区的静态类&#xff0c;可以使得我们方便的操作与时区相关的信息 下面的内容是摘自MSDN的信息&#xff0c;注意&#xff1a;这个类是Beta2中的类&#xff0c;至于Release后是否改变还不知道。由于电脑中没有安装英文正式版的MSDN,所以只能…

【转】Ubuntu16.04安装 Matlab2018a详细教程

转自&#xff1a;【Ubuntu】安装 Matlab2018a详细教程_My Blogs-CSDN博客_matlab2018a安装教程 Matlab2018a安装包下载&#xff1a; 链接: 百度网盘 请输入提取码 提取码: 3c75 一. 安装前的准备工作 1. 将下载好的文件R2018a_glnxa64_dvd1.iso, R2018a_glnxa64_dvd2.iso, …

Hive-Based Registry使用

对于Hive干什么用这里就不多介绍了&#xff0c;根据文档的介绍&#xff0c;Hive形式的注册表分为&#xff1a;Boot hive,System hv和User hive三种。Boot hive就是指那部分在Boot过程中需要使用到的注册表信息&#xff0c;这部分是实在没办法放在System hive中了&#xff0c;所…

【转】matlab与C/C++混合编程——在Windows/Linux上调用Matlab编译的动态库文件

转自&#xff1a;matlab与C/C混合编程——在Windows/Linux上调用Matlab编译的动态库文件_sinat_18131557的博客-CSDN博客 dateversioncomments2019/9/9V0.1Init2019/9/27V0.2添加报错信息写入log的实现文章目录 MATLAB生成Dll文件调用 生成dll文件调用dll文件MATLAB生成.so文件…

WinCE中的RAM-Based Registry与HIVE-Based Registry

WinCE支持两种类型注册表&#xff1a;RAM-BasedHIVE-Based&#xff0c;默认使RAM-Based注册表。 1.RAM-Based注册表 RAM-Based注册表所有注册表数据存储象存储(object store)&#xff0c;就存放RAM里面。般有电池备份RAM系统面&#xff0c;就说&#xff0c;当系统掉电以&#…

验证日期时间的正则表达式

可以不要秒数的: ^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][123…

【转】Linux下c++调用自己编写的matlab函数:通过mcc动态链接库.so实现

转自&#xff1a;Linux下c调用自己编写的matlab函数&#xff1a;通过mcc动态链接库.so实现_Jaster_wisdom的专栏-CSDN博客 之前在这里和这里调用了matlab自带的一些函数&#xff0c;是通过matlab引擎来实现的。那里调用的是matlab自带的函数&#xff0c;那么如果想调用自己写的…

C#连接数据库SQL(2005)

首先来总结一下进行数据库编程的全过程,这里用的是SQL SERVER(1) 建立SqlConnection对象以连接数据库SqlConnection mysqlconnectionnew SqlConnection("Serverlocalhost; databaseyourdatabase;uidsa;pwdsa");(2) 建立SqlCommand对象SqlCommand mysqlcommandmysqlco…

MULTI BIN的wince 5.0,smdk2440下的实现

原本早就要发出来了&#xff0c;但是看到king_sundi网友已经发过一个帖子了&#xff0c;所以犹豫了没有发&#xff0c;相对而言&#xff0c;我这个总结更具有实用性&#xff0c;基本上照着这个步骤来就能成功&#xff0c;我给我几个朋友试过了&#xff0c;他们一开始对这个基本…

【转】gcc/g++ 链接库的编译与链接

转自&#xff1a;gcc/g 链接库的编译与链接_Surge-CSDN博客_g 链接 gcc/g 链接库的编译与链接 surgewonggmail.com Surge_surgewong_CSDN博客 程序编译一般需要经预处理、编译、汇编和链接几个步骤。在实际应用中&#xff0c;有些公共代码需要反复使用&#xff0c;就把这些代…

常用WebServices返回数据的4种方法比较

以前经常在群里听到朋友们说WebServices的性能特别的慢&#xff0c;说的如何如何。说实话&#xff0c;WebServices的确比调用本地数据要慢一些&#xff0c;可是究竟有多慢&#xff0c;真的如朋友们说的那么难以忍受吗&#xff1f;我个人感觉&#xff0c;多半原因在处理的方式上…

让S3c2410里拥有HIVE注册表的 全部步骤

首先&#xff0c;我是花了几天的时间才搞好的&#xff0c;当然我也在网上找了很多资料&#xff0c;可是网上朋友说可行的方法&#xff0c;我试来试去就是不行&#xff0c;这我也不清楚为什么&#xff0c;一开始有说用到BINFS格式的[指NandFlash分区格式]&#xff0c;后来又看到…

【转】vscode下编译告警“undefined reference”?三步教你如何解决

转自&#xff1a;vscode下编译告警“undefined reference”&#xff1f;三步教你如何解决_squall0984的博客-CSDN博客 近些年来&#xff0c;由于VS Studio体积庞大、价格昂贵等原因&#xff0c;越来越多的C/C开发者转投VSCode的怀抱。VSCode有着免费1、开源2、多平台支持、占…

写在S3C2440A平台+winCE5.0+NAND +HIVE注册表的实现

最近一直弄这个注册表的永久保存&#xff0c;在网上看到很多相关的贴子&#xff0c;就像大部分人说的一样&#xff0c;很少有人照着做就可以成功的。 今天总算成功了&#xff0c;总结经验如下&#xff0c;但愿对后来者有所帮助。 首先&#xff0c;要实现注册表的永久保存&…

非常实用的Asp.net常用的51个代码

1.弹出对话框.点击转向指定页面 Code: Response.Write("<script>window.alert(该会员没有提交申请,请重新提交&#xff01;)</script>");Response.Write("<script>window.location http://www.msproject.cn/index.asp</script>");…

【转】VScode tasks.json和launch.json的设置

转自&#xff1a;VScode tasks.json和launch.json的设置 - 知乎 目录 C&#xff08;方法1&#xff1a;不使用VSCode插件&#xff0c;较繁琐&#xff09;C&#xff08;方法2&#xff1a;使用Native Debug插件&#xff09;C&#xff08;方法3&#xff1a;使用C/C Compile Run插…

小处见大问题

如果有以下几种很简单的需求&#xff0c;可是小需要中隐藏着大问题。 给页面添加4个web按钮&#xff0c;点击4个按钮分别实现 &#xff08;1&#xff09;打开一个摸态对话框 &#xff08;2&#xff09;页面在客户端转向 &#xff08;3&#xff09;页面转向并且进行一个服务器端…