SVG简介

简介:

最近遇到SVG这个名词,于是查阅资料,做个笔记。

前言

图片的数字化。将图片存储为数据有两种方案。

位图。也被称为光栅图。即是以自然的光学的眼光将图片看成在平面上密集排布的点的集合。每个点发出的光有独立的频率和强度,反映在视觉上,就是颜色和亮度。这些信息有不同的编码方案,在互联网上最常见的就是RGB。根据需要,编码后的信息可以有不同的位(bit)数——位深。位数越高,颜色越清晰,对比度越高;占用的空间也越大。另一项决定位图的精细度的是其中点的数量。一个位图文件就是所有构成其的点的数据的集合,它的大小自然就等于点数乘以位深。常见的JPEG/JPG, GIF, TIFF, PNG, BMP。

矢量图。它用抽象的视角看待图形,记录其中展示的模式而不是各个点的原始数据。它将图片看成各个“对象”的组合,用曲线记录对象的轮廓,用某种颜色的模式描述对象内部的图案(如用梯度描述渐变色)。

SVG是什么

可缩放矢量图形(Scalable Vector Graphics)是基于可扩展标记语言(Extensible Markup Language,XML ),用于描述二维矢量图形的一种图形格式,一般用在网页。

SVG创建工具

由于SVG是XML文件,SVG图像可以用任何文本编辑器创建,但它往往是与一个绘图程序一起使用,如Inkscape、Adobe Illustrator,更方便地创建SVG图像。

SVG使用方式

1. 浏览器直接打开

2. 在HTML中使用<img>标签引用

3. 直接在HTML中使用SVG标签

4. 作为CSS背景

SVG优点

1. 矢量的图形,当然不会失真,可任意伸缩。

2. 可被非常多的工具读取和修改(比如记事本)。

3. 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强。

4. 图像中的文本是可选的,同时也是可搜索的(很适合制作地图)。

浏览器支持

IE9+,Firefox,Chrome,Opera和Safar、iOS、Android3+ 都支持SVG。

IE8和早期版本都需要一个插件 - 如Adobe SVG浏览器,这是免费提供的。

PS:详情查看:http://caniuse.com/#feat=svg

Canvas与SVG的区别:

SVG

SVG是一种使用 XML 描述 2D 图形的语言。 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。你可以为某个元素附加JavaScript 事件处理器。在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。

特点:

1. 不依赖分辨率

2. 支持事件处理器

3. 最适合带有大型渲染区域的应用程序(比如谷歌地图)

4. 复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快)

5. 不适合游戏应用

Canvas

Canvas 通过 JavaScript 来绘制 2D 图形, 是逐像素进行渲染的。在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。

特点:

1. 依赖分辨率

2. 不支持事件处理器

3. 弱的文本渲染能力

4. 能够以 .png 或 .jpg 格式保存结果图像

5. 最适合图像密集型的游戏,其中的许多对象会被频繁重绘

将SVG图标应用在移动端的问题?

1. 渲染成本,网页上svg渲染起来每一个色块儿都要显卡算一壶,最后卡的要命。icon-font利用的是系统的API,譬如DirectWrite,Core Text这样。

2. 渲染效果,不同的浏览器乃至不同的平台的抗锯齿处理千差万别,你的图标如果多边形比较多,在底分辨屏幕上的效果可能千差万别,特别是如果赶上蛋疼的用户关掉抗锯齿,图标会惨不忍睹的。

3. 开发者问题。 一个最简单的道理,大公司里做移动端通常有团队,做图标这种事情都是交给美工(高大上一点给负责UI的同事),美工熟悉的是PS 和illustrator,而SVG 通常是属于前端工程师的知识/技能范畴。

4. Fallback的支持,太难了,兼容的开发成本问题。

5. 学习成本比较高。

 

总结

SVG是一种矢量图形格式,用XML存储,不失真,易编辑。由于并没有进行实操,所以对相关API不发表意见。

 

参考文献

1. http://www.cnblogs.com/duanhuajian/archive/2013/07/31/3227410.html

2. https://www.zhihu.com/question/26865508

3. http://www.w3school.com.cn/svg/

 

本文为原创文章,转载请保留原出处,方便溯源,如有错误地方,谢谢指正。

本文地址 :http://www.cnblogs.com/lovesong/p/5940246.html

分类:  1.前端基础


本文转自 海角在眼前 博客园博客,原文链接:http://www.cnblogs.com/lovesong/p/5940246.html    ,如需转载请自行联系原作者
相关文章
|
存储 数据库 数据安全/隐私保护
如何使用AnyTXT Searcher+cpolar实现身在异地搜索公司本地电脑文件
如何使用AnyTXT Searcher+cpolar实现身在异地搜索公司本地电脑文件
237 0
|
人工智能 搜索推荐 算法
豆包角色制作指南
这篇文章是一份豆包角色制作指南,介绍了如何使用虚拟角色生成器创建IP或非IP角色,以及创作对话人物sp的技巧和Bot主动发消息的技巧。
|
算法 定位技术
八爪鱼RPA在微信的十大高频场景,让你的工作事半功倍!
在微信中,rpa(机器人流程自动化)技术可以应用于各种情况,为用户提供更高效、便捷的工作体验。本文将介绍微信中的十大高频场景,并说明rpa可以如何应用于这些场景中,从而让工作事半功倍。
|
监控 安全 芯片
看见“信任”,可信计算史上最全解析
等保2.0将可信提升到一个新的强度。在等保一到四级都有可信的要求,主要在三个领域:计算环境可信、网络可信、接入可信。
35124 1
看见“信任”,可信计算史上最全解析
|
JavaScript
tsc : 无法将“tsc”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
tsc : 无法将“tsc”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
tsc : 无法将“tsc”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
|
存储 关系型数据库 MySQL
MySQL 索引结构及其优劣
【10月更文挑战第12天】不同的索引结构各有其适用场景,在实际应用中,需要根据数据特点、查询需求等因素综合考虑选择合适的索引结构。同时,过多或不合理的索引也可能会带来一些负面影响,如增加存储开销、降低数据插入和更新的速度等。因此,在设计索引时需要进行合理的规划和优化。
558 155
|
存储 SQL 关系型数据库
OceanBase与MySQL有何区别?
【8月更文挑战第12天】OceanBase与MySQL有何区别?
3996 3
|
缓存 负载均衡 网络协议
Linux的TCP连接数量与百万千万并发应对策略
【8月更文挑战第15天】在Linux系统中,关于TCP连接数量的一个常见误解是认为其最大不能超过65535个。这一数字实际上是TCP端口号的上限,而非TCP连接数的直接限制。实际上,Linux服务器能够处理的TCP连接数远远超过这一数字,关键在于理解TCP连接的标识方式、系统配置优化以及应用架构设计。
1482 2
|
存储 传感器 算法
【软件设计师备考 专题 】校验方法和校验码:确保数据的完整性
【软件设计师备考 专题 】校验方法和校验码:确保数据的完整性
482 0
|
XML Java Maven
IntellJ IDEA利用spring initializr创建springboot项目
IntellJ IDEA利用spring initializr创建springboot项目
859 0