什么是SVG(可升级矢量图形)
作者:蔡发明 来源:SVG中国 发布时间:2008-05-06 12:37:00
SVG是XML来描述二维图形的语言。SVG可以构造3种类型的图形对象:矢量图形、位图图象和文字。图形对象可被组化、样式化、变形和重组,包括图象嵌套、变形处理、剪辑路径、Alpha蒙板、滤镜特效和模板对象。
1 SVG概述
SVG图形可以是动态的、可交互性的。动画通过直接声明(比如在SVG里嵌入SVG动画元素)或通过脚本来进行定义或触发。
SVG通过使用脚本语言来完成比较复杂的应用,脚本语言调用SVG对象模型(SVG Document Object Model)来访问或控制所有的元素、属性和属性值。事件处理器如onmouseover、onclick等可以应用到SVG图形对象上,由于SVG和其他Web标准完全兼容和同步,如XML,CSS2,XSLT,DOM2,SMIL,XLINK,HTML等。因此,在同一Web页面上,有些特性,如脚本编程等,可以同时应用在XHTML和SVG元素上。
SVG不但可以表现图像,还可以表现文字、音频等其他信息,对于那些有视觉障碍的人,可以通过可替换的方法把图像替换为音频信息,这样对那些有视觉障碍的人,也能够得到SVG所表现的信息。另外,对那些手持设备、车载设备、无线设备来说,它们的屏幕一般都比较小,而且显示分辨率低,SVG的矢量特性也可以让这些设备清楚地浏览SVG图像信息,这都是目前的位图图像所不能做到的。
2 SVG是什么?
SVG是可升级矢量图形(Scalable Vector Graphics)的简称。
可升级(Scalable)意味着统一地增加或减少。对图像来说,可升级意味着图像尺寸并不限定固定的大小,对互联网(Internet)来说,可升级意味着一个特殊的技术,它能够增加文件数量、用户数量和应用的种类。SVG作为Web上的一个技术之一,可升级含有这两方面的意思。
SVG图像可升级到不同的显示的分辨率,例如:相同尺寸的SVG图像,打印输出使用高分辨率,而在屏幕显示时可以使用不同的分辨率。同一个SVG图像能够以不同的尺寸放到同一页面上,也可以被不同的其他页面所使用。我们可以放大一个SVG图像,来了解其精美的细节信息。
SVG是可升级的,原因还在于:同一段 SVG内容,既可以是独立的图像,也可以被引用到一个页面,也可以嵌入到另外的SVG图像中。因此,一个复杂的SVG图像可以有多部分组成,也可以由多人共同完成。符号、标记、字体能够重复利用图形的某些组成部分,这样可以充分利用HTTP的缓存优势。
矢量图像包含有诸如直线和曲线等几何对象。这相对于以像素保存信息的位图格式的图像(如PNG、JPEG)来说有更大的灵活性。矢量格式图像的最大好处就是,它可以和位图图像集成在一起,也可以把他们和矢量信息结合在一起以产生更加完美的图像。SVG也不例外。
由于所有的显示器都是基于点阵的,位图图像和矢量图像的差别就归结为他们是在客户端还是在服务器端进行图像展现处理;SVG能够控制图像展现的过程,不至于出现粗糙或带锯齿的图像。SVG还能够提供客户端的滤镜效果。
大多数XML语法描绘的都是文字信息或原始数据,他们不能提供图像的能力,SVG能够提供丰富的、结构化的矢量和矢量与图像混合的图像信息。
XML是W3C的推荐标准,用于结构化的信息交换,已经得到广泛的普及和应用。SVG是建立在此基础上的,有很明显的优势,比如:广泛的国际化基础,强大的结构化能力,以及对象模型等。
样式单能够很好地控制文字的外在表现方式,它的灵活性、快速下载和易于维护的特性早已被人们接受,SVG把这种技术扩展到了图像世界中。脚本编程、 DOM对象和CSS样式单的组合常被人们称作Dynamic HTML,广泛应用在动画制作、交互性和外在的表现效果中,SVG也可以借助脚本语言进行操纵文档对象和样式单。
猜你喜欢
- 如下所示:dicFile = open('train_1.txt', 'r')
- 本文实例讲述了Python本地与全局命名空间用法。分享给大家供大家参考。具体如下:x = 1def fun(a): b=3 &n
- 废话不多说 上语句:查询锁表语句:select object_name,machine,s.sid,s.serial#from v$lock
- python 的虚拟环境可以为一个 python 项目提供独立的解释环境、依赖包等资源,既能够很好的隔离不同项目使用不同 python 版本
- 学习python都知道,python的第三方库是很多,如果都在本机 pip 的话,在新建项目的时候都会加载不需要用到的库,影响运行速度。而且
- 本文实例讲述了Yii框架学习笔记之应用组件操作。分享给大家供大家参考,具体如下:所有的组件都应声明在config/web.php//组件声明
- 现在主流的cms或者blog等系统中,都内置的有插件系统,但是层层深入、剖析实现的方式,其实都是最简单的钩子的复杂化的实现。前言钩子是插件执
- 1 简介在日常运行程序的过程中常常涉及到循环迭代过程,对于执行时间很短的程序来说倒无所谓,但对于运行过程有明显耗时的涉及循环迭代的程序,为其
- Python是一门清晰简洁的语言,如果你对一些细节不了解的话,就会掉入到那些深不见底的“坑”里,下面,我就来总结一些Python里常见的坑。
- 简单地说,就是在个人中心页面,该客户点击取消订单,提交到某个action,进行数据库的操作,将一张表中的字段值改变,然后重新返回到个人中心页
- 本文为大家分享了Python实现自己下载音乐统计的具体代码,供大家参考,具体内容如下今天看Python实例,学习了如何对文件进行操作,突然想
- 简介testing是 Go 语言标准库自带的测试库。在 Go 语言中编写测试很简单,只需要遵循 Go 测试的几个约定,与编写正常的 Go 代
- 题目:轮盘分为三部分: 一等奖, 二等奖和三等奖;轮盘转的时候是随机的,如果范围在[0,0.08)之间,代表一等奖,如果范围在[0.08,0
- PyQuery库就是python中的一个解析库。作用十分强大,使用上也是相当的灵活,能够实现初始化字符串、初始化 HTML 文件、初始化请求
- 之一:torchvision 中包含了很多预训练好的模型,这样就使得 fine-tune 非常容易。本文主要介绍如何 fine-tune t
- 闭包基本介绍闭包就是 一个函数 和其相关的 引用环境 组合的一个整体好处: 保存引用的变量
- 1,不用第三方库# coding: utf-8import loggingBLACK, RED, GREEN, YELLOW, BLUE,
- 本文为大家分享了php运行环境搭建安装图文教程,供大家参考,具体内容如下安装apache:1,不要安装到有中文的目录中:2,尽量将apach
- 1. 数据类型 type()#!/usr/bin/env python# -*- coding: utf-8 -*-# Yongqiang
- LCase:转成小写 UCase:转成大写 下面是ASP中的代码,可以直接演示效果的。 代码如下:<% dim s