了解SVG

277 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情

了解SVG

如果想要一种放大缩小完全不失真的图片,那就是SVG了,SVG 全称Scalable Vector Graphics, 是一种可以缩放的矢量图格式,并且在简单图形方面,Svg的内存占用要小的多。在多媒体时代,矢量图的重要作用越发显现。

什么是SVG

SVG 全称Scalable Vector Graphics,是一种矢量图格式,相对于PNG、JPG来说,它采用xml格式存储数据,根据不同的命令绘制出相应的图形,越来越多的浏览器也开始支持SVG。

SVG的基本标签

由于SVG是xml格式,所以内容中会有很多标签,比如常见的标签有

  • 直线 line
  • 圆 circle
  • 椭圆 ellipse
  • 路径 path

其中最复杂的是路径这个标签,曲线、笔迹、优美的图案都少不了路径的应用。其中有一个非常有名的曲线,叫贝塞尔曲线,也不用把它想的太复杂,它的出现是为了让曲线在电子屏幕上更光滑。

前端中使用SVG

  • 在代码中写入SVG的标签

这种方法很简单,svg原本是一种xml格式,直接将xml内容放在 body 标签中即可。比如:

<!DOCTYPE html>
<html>
<body>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<line x1="0" y1="0" x2="100" y2="100"
  style="stroke:rgb(0,0,0);stroke-width:10"/></svg> 
</body>
</html>
  • iframe 标签加载

直接将路径添加进iframe标签

<iframe src="xx.svg"></iframe>
  • embed标签
<embed src="xx.svg" type="image/svg+xml" />

Andriod 使用SVG

如果是使用SVG本地文件,则需要进行转换。

Android 5.0 及以上系统中引入了VectorDrawable来支持矢量图(SVG),创建一个项目对着res点击右键,依次 New->Vector Asset,Clip Art是从安卓自带素材中选择,Local file是选择本地的素材,选择之后会在Drawable中生成一个xml文件,直接在ImageView中使用即可。

如果是想自己解析SVG中的xml标签,就需要彻底了解svg中的标签和Android中Path用法的对应,大部分的方法思想上是一致的,但如果要做一个完美加载svg库还是很困难。还是使用第三方的加载库吧。