【转】小谈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,一经查实,立即删除!

相关文章

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

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

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

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

【转】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;当系统掉电以&#…

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

转自&#xff1a;Linux下c调用自己编写的matlab函数&#xff1a;通过mcc动态链接库.so实现_Jaster_wisdom的专栏-CSDN博客 之前在这里和这里调用了matlab自带的一些函数&#xff0c;是通过matlab引擎来实现的。那里调用的是matlab自带的函数&#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;多半原因在处理的方式上…

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

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

【转】vscode配置C/C++环境

转自&#xff1a;vscode配置C/C环境 - 知乎 VS Code配置作者&#xff1a;谭九鼎 链接&#xff1a;Visual Studio Code 如何编写运行 C、C 程序&#xff1f; - 知乎 有改动。个人按照步骤后&#xff0c;做到复制上三个json那一步&#xff0c;就可以运行了。 我将settings.json…

【转】dicom网络通讯入门(1)

转自&#xff1a;dicom网络通讯入门&#xff08;1&#xff09; - assassinx - 博客园 如果只看标准就会越看越糊涂&#xff0c;根本原因就是因为dicom抽象得太严重&#xff0c;是“专家”弄的。没办法。 那么到底服务类是什么&#xff1f;sop 又是什么&#xff1f;&#xff0…

用WebORB实现flex + .net后台的Remoting

实现flex与后台通信最简单的方式是采用httpServic的方式&#xff0c;或webservice。但这两种方式都是基于文本的传输&#xff0c;传输效率低&#xff0c;采用RemoteObject的方式&#xff0c;传输的内容采用AMF3格式的二进制编码&#xff0c;效率较高&#xff0c;并且能实现远程…

【转】dicom网络通讯入门(2)

转自&#xff1a;dicom网络通讯入门&#xff08;2&#xff09; - assassinx - 博客园 首先我们现一个echo响应测试工具&#xff0c;也就是echo 的scu&#xff0c;不是实现打印作业管理么。同学我告诉你还早着呢。本来标题取的就是《dicomviewer 第二弹 之 实现打印管理》名字多…

基于WINCE6.0下载multiple XIP镜像文件

备注&#xff1a;基于usb下载的方式&#xff0c;MLC nand flash为K9G8G08U 1. Multiple XIP模式的文件说明 Multiple XIP模式下生成的文件有chain.bin、chain.lst、NK.bin、xip.bin和xipkernel.bin&#xff0c;如下图所示&#xff1a; 图1 2. Eboot下载Multiple XI…

Final Michael Scofield

转载于:https://www.cnblogs.com/andrewx/archive/2009/08/16/1547738.html

【转】dicom网络通讯入门(3)

转自&#xff1a; dicom网络通讯入门&#xff08;3&#xff09; - assassinx - 博客园 接下来可以进行消息传递了 &#xff0c;也就是dimse &#xff0c;再来复习下 什么是dimse 。n-set n-create c-echo 这些都是dimse 他们都是属于一种结构的pdu 那就是tf-pdu&#xff08;传…

【转】ubuntu 下 VNCview 远程桌面无法传输文件问题

转自&#xff1a;ubuntu18.04VNCview文件传输问题_gsls200808的专栏-CSDN博客_vnc传输文件按钮不可用 很多文章说VNCview不能传输文件&#xff0c;实际上这是一个误区。 以ubuntu为例&#xff0c;默认使用 sudo apt-get vnc4server 这个命令安装上的vncserver实际是tigerVNC…

在何时该用什么方式编译WinCE

这是一篇很好的文章&#xff0c;很多开发者其实并没有搞清楚这个问题&#xff1a;在何时该用什么方式编译WinCE 导致走了很多弯路&#xff0c;也包括我自己 感谢作者写了这篇文章 这么好的文章&#xff0c;我想应该翻译过来给大家 在何时该用什么方式编译WinCE 在新闻组里&…

【转】Ubuntu 16.04 安装 CUDA10.1 (解决循环登陆的问题)

转自&#xff1a;Ubuntu 16.04 安装 CUDA10.1 &#xff08;解决循环登陆的问题&#xff09; - Hongkai_Ding - 博客园 0. 前言 这里直接用 cuda安装文件同时安装 NVIDIA 驱动和 CUDA&#xff0c;没有单独安装更高版本的 NVIDIA 驱动&#xff1b;此安装是在 Intel 集显下的图形…

【转】Ubuntu 16.04 Nvidia驱动安装(run方式)

转自&#xff1a;Ubuntu 16.04 Nvidia驱动安装(run方式)_lihe的博客-CSDN博客 1.下载驱动程序 Nvidia驱动下载 https://www.geforce.cn/drivers/beta-legacy http://www.nvidia.cn/Download/index.aspx 根据显卡选择适用的驱动版本&#xff0c;下载完之后是一个名称为 NVIDIA…

2008R2Win7管理九DNS冗余和恢复

2008R2Win7管理九DNS冗余和恢复 本文介绍如何在ad中的主dns崩溃后快速利用备份dns将主dns恢复.以及在主dns完好的时候进行dns冗余备份 本文在file这台服务器上安装好dns角色来作为主dns的备份,安装角色的过程不在详细描述,略过.相信大家都知道了. 本问对拓扑图略有改动,故再次更…