svg究竟是什么?
svg究竟是什么?
1 要点
要点1:svg与jpg/png等格式的用途完全不同,不可相提并论,没有可比性,不可互相替代。
要点2:日常生活中,我们用相机拍摄自然景象得到的照片和视频,能且只能用jpg/png/mp4等格式存储,不可用svg格式存储。在自然景象中,像素之间没有确定的数学函数关系。我们称自然景象为图像,只能用像素点描述,无法用数学函数描述。
要点3:svg用于人为设计(特别强调人为设计,而非自然存在的)的点、线、面构成的图形,这些图形可用数学函数来表达。svg无法描述和表达自然界的景象。
|
概念 |
特点 |
生成者 |
描述方法 |
文件格式 |
|
图像 |
像素点之间无确定的数学函数关系 |
自然 |
逐个像素 |
jpg/png/mp4等 |
|
图形 |
点与点之间有确定的数学函数关系 |
人为 |
数学函数 |
svg |
2 svg举例说明
假设要设计一个线条非常优美的图标,由椭圆、双曲线和抛物线构成。
假设这个图标非常巨大,由一万亿个点构成。
我们可以用以下要素描述这个图标:
S1:椭圆方程:长轴长度,短轴长度,x的范围,线条颜色。
S2:双曲函数或方程:x的范围,线条颜色
S3:抛物线函数或方程:x的范围,线条颜色
描述以上要素大约需要256字节,有了这256字节,软件会根据x的范围逐点绘制每条曲线,最终绘制出由一万亿个点构成的美丽图标!
设想一下,这个图标若用jpg/png去绘制,将耗费多少数据量。
结论
结论1:svg仅适用于人为设计的图形,这些图形可以用数学函数来表达,这些数学函数可以用很少的数据来表达。最终达到的目的:用很少的数据表达很复杂、很优美的图形。
结论2:自然景象(图像)中的点与点之间无关联关系,无法用数学函数表达,只能用像素点表达,jpg/png/mp4适用于表达自然景象(图像)。
另外,一定要辨别清楚图形和图像这两个概念。
图形是人为设计的,可用数学函数来表达,svg针对这种用途。
图像是自然存在的,无法用数学函数来表达,jpg/png/mp4针对这种用途。
svg究竟是什么?的更多相关文章
- SVG文件:从Illustrator导文件到Web
可缩放矢量图形(SVG)是早在1998年就已经有的一种矢量图像格式.它总是和Web一起发展,但是直到现在才开始赶上Web发展的步伐.如今我们已经不能否认SVG和Web的相关性,所以让我们来学习一下从I ...
- 理解SVG坐标系统和变换: transform属性
SVG元素可以通过缩放,移动,倾斜和旋转来变换-类似HTML元素使用CSS transform来变换.然而,当涉及到坐标系时这些变换所产生的影响必然有一定差别.在这篇文章中我们讨论SVG的transf ...
- 蛋疼的SVG外部引用方式
SVG在html页面中有两种引用方式: 1. 内联.就是直接将SVG图形写在html的svg标签中,比如: <html> <head></head> <bod ...
- 获取SVG中g标签的宽度高度及位置坐标
1. 问题的出现 对于普通的HTML元素,有很多获得其宽度width.高度height.距左left.距顶top等属性的方法: 类似offsetWidth,clientWidth,width之类的,通 ...
- 那些好用的 VS Code 插件,究竟是如何提高编码效率的?
在上一篇文章中我们已经对 vscode 插件有了一个初步的认识与了解了,接下去我们就要"揭秘"一下市面上那些好用的 vscode 插件究竟是如何帮我们提高工作效率的. 本文首发于「 ...
- 学习ASP.NET Core,怎能不了解请求处理管道[1]: 中间件究竟是个什么东西?
ASP.NET Core管道虽然在结构组成上显得非常简单,但是在具体实现上却涉及到太多的对象,所以我们在 "通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流 ...
- 【Web动画】SVG 实现复杂线条动画
在上一篇文章中,我们初步实现了一些利用基本图形就能完成的线条动画: [Web动画]SVG 线条动画入门 当然,事物都是朝着熵增焓减的方向发展的,复杂线条也肯定比有序线条要多. 很多时候,我们无法人工去 ...
- 【Web动画】SVG 线条动画入门
通常我们说的 Web 动画,包含了三大类. CSS3 动画 javascript 动画(canvas) html 动画(SVG) 个人认为 3 种动画各有优劣,实际应用中根据掌握情况作出取舍,本文讨论 ...
- SVG:textPath深入理解
SVG的文本可以沿着一条自定义的Path来排布,比如曲线.圆形等等,使用方式如下所示(来源MDN): <svg viewBox="0 0 1000 300" xmlns=&q ...
随机推荐
- 01 sublime text3下配置c/c++ 的编译运行环境
安装mingw,在线安装经常出问题,推荐离线安装 参考: https://blog.csdn.net/qq_34432960/article/details/106124496?utm_medium= ...
- matlab中fopen 打开文件或获得有关打开文件的信息
参考:https://ww2.mathworks.cn/help/matlab/ref/fopen.html?searchHighlight=fopen&s_tid=doc_srchtitle ...
- JavaScript倒计时效果
实现思路: 输入的时间减去现在的时间就是剩余的时间,但是不能拿着时分秒相减,比如05分减去25分,结果会是负的. 可以用时间戳来做,用户输入时间总的毫秒数减去现在时间的总的毫秒数,得到的就是剩余时间的 ...
- Python 的映射数据类型有哪些?零基础小白入门学习必看
1 映射类关系 Python 的 collections.abc 模块内拥有 Mapping 和 MutableMapping 这两个抽象基类,它们为 dict 和其他类似的类型提供了接口定义. mu ...
- 笔记本键盘按U键却变成了4
解答 笔记本键盘U盘变成了4,是因为你开启了小键盘功能.出现该问题,只要关闭小键盘功能即可,操作如下: 按住键盘下方的Fn,同时按住键盘顶部的F键中标有Numlk的键. 电脑屏幕出现解锁标志,小键盘功 ...
- Vim最强调试插件:vimspector
最近看到了韦大在知乎的回答后,想去试用一下vimspector,却发现vimspector诞生两年了却没有介绍它的中文资料.我查阅官方文档遇到不少困难,在这里记录折腾出来的结果,与大家分享. vims ...
- MeteoInfoLab脚本示例:SeaWiFS HDF Grid数据
SeaWiFS HDF Grid数据读取,特别是涉及到了文件的众多属性数据的读取,数据取对数后绘图.脚本程序: #Add data file f = addfile('D:/Temp/hdf/S199 ...
- MeteoInfoLab脚本示例:合并数组
对于全球数据来说,经度要么是-180 - 180,要么是0 - 360,都会存在边界数据不连续的问题.比如0 - 360的数据,怎么得到 -20 - 30度的连续格点数据就是个问题(跨越了数据的经度边 ...
- java中的t怎么用
<T> T表示返回值是一个泛型,传递啥,就返回啥类型的数据,而单独的T就是表示限制你传递的参数类型,这个案例中,通过一个泛型的返回方式,获取每一个集合中的第一个数据, 通过返回值<T ...
- localhost与127.0.0.1与0.0.0.0
localhost localhost其实是域名,一般系统默认将localhost指向127.0.0.1,但是localhost并不等于127.0.0.1,localhost指向的IP地址是可以配置的 ...