网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > 课程设计 > 正文

基于JPG标准的图像压缩

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
基于JPG标准的图像压缩算法+代码+论文毕业设计开题报告及论文工作计划表国内外研究现状、发展动态课题来源、选题依据和背影情况、课题研究目的工程应用价值
随着多媒体技术的快速发展,静止图像的应用越来越广泛。它的应用主要集中在图像的存储和图像的传输两方面,从具体应用中我们可以发现静止图像占用了越来越多的资源。在这样的背景条件下,静止图像的压缩成为了一个研究的热点。目前静止图像的压缩算法以JPEG(Joint Photographic Experts Group)和JPEG2000为主。JPEG是第一个被广泛接受的单色和彩色静止图像压缩标准,它的名字源于“Joint Photographic Experts Group(联合图像专家组)”,它是由ISO/和CCITT协同工作的机构,这个机构的工作成果是ISO的国际标准ISO/IEC10918-1(连续色调静止图像的数字压缩和编码,digital compression and coding of continuous tone still images)和ITU-T的建议T.81。JPEG标准草案于1991年公布,1992年正式批准为国际标准,以后这个工作组的进一步增强和扩展形成了ISO 10918-3和ITU-T建议T.81。JPEG是一种采用预测编码(DPCM)、离散余弦变换(DCT)以及熵编码,以去除冗余的图像和彩色数据的有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,因此容易造成图像数据的损伤。尤其是使用过高的压缩比例,将使最终解压缩后恢复的图像质量明显降低,如果追求高品质图像,不宜采用过高压缩比例。但是JPEG压缩技术十分先进,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,也即可以用最少的磁盘空间得到较好的图像品质。而且 JPEG是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩比例对文件进行压缩,支持多种压缩级别,压缩比率通常在10:1到40:1之间,压缩比越大,品质就越低;相反地,压缩比越小,品质就越好。比如可以把1.37Mb的BMP位图文件压缩至20.3KB。当然也可以在图像质量和文件尺寸之间找到平衡点。JPEG格式压缩的主要是高频信息,对色彩的信息保留较好,适合应用于互联网,可减少图像的传输时间,可以支持24bit真彩色,也普遍应用于需要连续色调的图像。 JPEG的核心算法是DCT变换编码,其压缩性能基本反映了20世纪80年代末图像压缩的技术水平。但自从JPEG制定后的近10年,许多更有效的图像压缩技术已经得到发展,如小波变换方法、分形方法、区域划分方法等。其中,发展最成熟和性能及通用性最好的静止图像压缩方法是小波变换方法。正因如此,制定了第二代静止图像压缩标准,即JPEG2000,它的核心技术正是小波变换编码。其核心编解码器采用小波变换、算术编码及嵌入式分层组织,较以往的静止图像压缩标准复杂,它在同一个码流中实现了无损和有损压缩、分辨率和信噪比的累进性以及随机访问等优良特性。JPEG2000作为JPEG的升级版,其压缩率比JPEG高约30%左右,同时支持有损和无损压缩。JPEG2000格式有一个极其重要的特征在于它能实现渐进传输,即先传输图像的轮廓,然后逐步传输数据,不断提高图像质量,让图像由朦胧到清晰显示。此外,JPEG2000还支持所谓的"感兴趣区域" 特性,可以任意指定影像上感兴趣区域的压缩质量,还可以选择指定的部分先解压缩。 JPEG2000和JPEG相比优势明显,且向下兼容,因此可取代传统的JPEG格式因而可以被更广泛的应用于互联网、彩色拷贝、打印、扫描、数字摄影、遥感、医学图像、数字图书馆、数字存档以及移动图像通信等领域。虽然jpeg有很多优点,但是其他的数据格式也有他们各自的优点。比如说如果要打印图像,特别是打印高质量的图像,TIFF格式是更为合适的选择。JPEG压缩技术可以说是所有图像压缩技术的基础。如MJPEG(Motion JPEG)就是在JPEG基础发展起来的动态图像压缩技术,它只单独的对某一帧进行压缩,而基本不考虑视频流中不同帧之间的变化。使得可获取清晰度很高的视频图像,而且可灵活设置每路的视频清晰度和压缩帧数。其压缩后的画面还可任意剪接。但它的缺陷也非常明显,其一,丢帧现象严重、实时性差,在保证每路都必 须是高清晰的前提下,很难完成实时压缩;其二,压缩效率低,存储占用空间较大。后来又出现了多层式JPEG(ML-JPEG)压缩技术,它采取渐层式技术,先传输低解析的图档,然后再补送更细节的压缩资料,使画面品质改善。这种方式所需的时间虽然与原先的方式一样。但由于可以先看到画面,所以使用者会觉得这种方式较好。而在静止图像压缩中,还有其他不少的标准正在发展。如微软今年3月份透露,该公司不久将向国际标准组织提交一个新的图片格式,并表示其新格式可以提供更高的图像质量和更好的压缩能力,即HD Photo格式。微软希望能用它的格式来取代现在通用的JPEG格式。微软称,HD Photo简洁的运算法则可以减少图像在压缩过程中受到的损失,即便图片大小仅有JPEG的一半,也将具有更高的质量。这种格式此外还能够同时支持“无损”和“有损”两种图片数据压缩方法,这两种方法可以对图像质量的产生不同的效果。微软称,HD Photo可以对色平衡和曝光设置进行调节,且不会像发生其它位图格式经常遇到的数据丢失或减少现象。无论HD是否可以取代JPEG,而JPEG在数字图像压缩发展中所做出的贡献是举足重轻的。—1—  三、研究内容 1、主要设计研究内容及关键技术
JPEG压缩格式是目前图像处理领域里面用得最广泛的一种图像压缩方式,本毕业设计将进行就JPEG标准对图像进行编、解码的研究。主要内容包括:1.从BMP格式图像的文件中(未压缩)读出图像,并能显示。     2.将BMP图像数据以JPEG标准压缩,保存为*.JPG文件。3.要求能读出jpg文件,并显示在界面上其中,JPEG的压缩实现主要分成四个步骤:    1.颜色模式转换及采样;    2.DCT变换(离散余弦变换);3.量化;4.编码(有算术编码和霍夫曼编码两种,这里采用霍夫曼编码)。
一、颜色转换及采样1.颜色转换:对BMP图像中的颜色数据进行由RGB一YCbCr的转换,Y表示亮度,Cb Cr分别表示蓝色度和红色度。转换公式:Y=0.2990R+0.5870G+0.1140BCb=-0.1687R-0.3313G+0.5000BCr=0.5000R-0.4187G-0.0813B这样转换以后就得到三个新的基色值,对这三个基色值来讲,都可以当作一个独立的图像平面来进行压缩编码。2.采样:颜色转换后,保留每一点的亮度值Y,而色度值Cb Cr则是每两点保留一点,在图像的行和列方向上都可执行颜色采样。如果采用的是1:1:1的采样比例,不用抽样。若采用的采样比是行列方向都是2:1:1,在行方向,每两点保留一点,列方向也是每两点保留一点,这样如果假设原来的CbCr矩阵大小为M*S,则经过2:1:1抽样之后成了M/2*s/2=1/4M*S,只有原来的1/4了,图像大大缩小,如果想减小图像的失真度,则可行方向不抽样或列方向不抽样。二、二维DCT变换    二维DCT变换公式为:F(u,v)=     其中x,y代表图像数据矩阵中的某个数据值的坐标位置    f(x,y)指图像数据矩阵中该点的资料值    u,v指经过DCT变换后矩阵中的某数值点的坐标位置,在这里u=x,v=y    F(u,v)指经过DCT变换后该坐标点的资料值。    当u=0,v=0时,C(u)C(v)=1.414/2    当u>0,v>0时,C(u)C(v)=1,经过变换后的资料值F(u,v)称为频率系数(或称DFT系数)。三、量化量化过程实质上是把亮度数据Y和色度数据Cb/Cr由时域转变成频域(DCT变换)并滤除高频分量的过程,由于人眼对高频分量不敏感,所以可以滤除高频分量,经过量化以后的每一个8*8数据块中,左上角第一个元素数据值为直流分量,称为DC,其余63个资料为交流分量,称为AC。四、游程编码,ZIGZAG扫描经过量化后的DCT系数矩阵,除DC值一般不为零外,AC系数大多是在零点附近的浮点数。经过取整以后,每一个8*8块中,有大量的AC系数的值为0。为了把尽可能多的其值为0的AC系数串在一起,以利于AC编码及提高压缩比,还必须把YCbCr矩阵中的每一个8*8块中的64个元素进行“之”字形排序(这样就可以做到把尽可能多的0串在一起)。其过程示意图如下: 图例:量化后的系数按Z字型扫描     箭头方向表示“之”字形排序以后原8*8中元素的新的位置顺序。五、哈夫曼编码哈夫曼编码是一种一致性编码法(又称"熵编码法"),用于数据的无损耗压缩。它使用一张特殊的编码表将源字符(例如某文件中的一个符号)进行编码。编码表是根据每一个源字符出现的估算概率而建立起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)。—2— 2、拟采取的设计研究方法、技术路线、预期目标
本设计拟采用VC++来实现。程序实现的各个步骤如下:1、读取BMP图像信息,获取图像行像素和列像素数值,在BMP图像中,图像数据是以倒序存放的。亦即实际图像第一行资料存放在BMP图像数据矩阵的最后一行,依次类推,所以取资料的时候要从BMP图像数据矩阵的最后一行开始读起,把数据存放在新建数组(或称矩阵)的第一行,一直取完。BMP图像行像素和列像素的数值分别存于文件头信息的第18和22字节。从Cimage类中可得到Width(图像宽度)和hight(图像高度)的数值。2、得到Pwidth*Phight后便得知BMP图像的像素点大小,而数据矩阵(三基色,RGB矩阵)的大小是Pwidth*Phight*3,因为每一个像素点都含有RGB三个数据,我们要处理的是数据矩阵而不是像素点矩阵。所以,新建数组的大小是(Pwidth*3)*Phight。3、接下来,把这一个矩阵(包含BGR)拆分成三个独立的B、G、R矩阵,得到三个新的矩阵(只包含B的矩阵,只包含G的矩阵,只包含R的矩阵),简称为B矩阵、G矩阵、R矩阵(大小为Pwidth*Phight),用程序实现拆分,只要依次取原矩阵的第1、4、7、10、13......个资料即得到B矩阵,依次读取第2、5、8、11......个数据即得到G矩阵,依次读第3、6、9、12......个资料即得到R矩阵。得到B、G、R矩阵后再利用颜色转换公式很容易就可得到YCbCr矩阵。Y(n)=0.114B(n)+0.587G(n)+0.299R(n)Cb(n)=0.5B(n)-0.3313G(n)-0.1687R(n)Cr(n)=0.0813B(n)-0.14187G(n)+0.5R(n)(For n=1 To PW*PH),其中PW为Pwidth的简写,PH为Phight的简写。4、二维DCT变换由于VC中无法实现二维DCT计算公式,所以只有把二维的变换变成先做一维,再做另一维的变换,俗称快速DCT变换。快速DCT变换方法如下:设一个大小为8的数组SL(8),先读取一个8*8块的第一行资料值,赋给SL(8),对SL(8)进行一维DCT变换后得到一个新的SL(8)数组,再把SL(8)数组覆盖到原来的8*8块中相应的地方去。做完第一行后再做第二行,一直做完8行,一个8*8块的一维DC即告完成,然后再做列方向的第二维DCT变换,变换公式一样,只是由SL(8)取8*8块的行资料变成取列数值。做完后覆盖回原值,即得到一个8*8块的DFT系数块,再重复这两个过程做第二个8*8块......一直到做完全部8*8块(Y,Cb,Cr)。这样就得到Y、Cb、Cr的DFT系数矩阵。5、量化读取Y矩阵中第一个8*8块,与量化系数矩阵中对应的相乘,得到的值覆盖回原矩阵,然后做第二个8*8块,一直到做完全部8*8块,然后做CbCr矩阵的量化,用另外一个系数矩阵。6、“之”字形扫描7、霍夫曼编码霍夫曼编码时必须判断一个个DC(AC)的值,以及转换成二进制代码后的码长,再去对照霍夫曼编码表进行编码,比如对一个DC值编码,首先得先判断该DC的值在哪段范围内,在某一段范围内的数值,其二进制代码长相等。并要让程序知道该DC的值到底为多少,然后才能进行编码。 8、压缩过程完成以后,接下去要做的工作便是码串存贮,存贮时需要注意的—点是在抽样过程中得到1个Y块对应1个Cb块合一个Cr块的对应关系,在存贮时也要按这种对应关系存贮,即1个Y块的码串后面紧接着存放与其对应的一个Cb块的码串及一个Cr块的码串,循环往复,存完所有串。这样的1个Y8*8块+1个Cb块+1个Cr简称为MCU,是JPEG格式的最小存贮处理单元。  四、工作计划序号 阶段及内容 工作量估计(时数) 起讫日期 阶段成果形式 确定方向,撰写开题报告
查阅资料,规划设计
程序设计及分段测试
最终程序测试,撰写设计报告
校验程序,完成报告
毕业答辩 7天
15天
27天
11天
4天
1天 4.7-4.13
4.14-4.28
4.29-5.25
5.26-6.5
6.6-6.9
6.10 开题报告
设计流程图
各模块程序
完整程序及报告
打印版报告
毕业答辩五、参考文献10. http://www.lwfree.cn11. thhp://www.751com.cn1. 张旭东 卢国栋 冯健,《图像编码基础和小波压缩技术——原理、算法和标准》,清华大学出版社,北京 20042. 陆宗骐,C/C++图像处理编程,清华大学出版社,北京 20063. 何斌,Visual C++数字图像处理 ,人民邮电出版社,2001:6854. 同志工作室,《Visual C++ 6.0开发技巧与实例教程》,人民邮电出版社,2000年5月第1版5. 王耀南 李树涛 毛建旭 ,计算机图像处理与识别技术,高等教育出版社,2005:2816. 张远鹏,计算机图像处理技术基础,北京大学出版社,1996:3107. 黄贤武等,数字图像处理与压缩编码技术,电子科技大学出版社,2000:5388. Kenneth R. Castleman ,Digital Image Processing ,Pearson Education,2003 :5689. Mahesh Chand ,Graphics Programming with GDI+,Addison-Wesley Professional,293
 
基于JPG标准的图像压缩目录摘要 IAbstract II第一章   绪论 11.1 研究的动机和目的 11.2 研究的背景 11.3 研究内容 21.4 系统原理 21.4.1  色彩模型 21.4.2  DCT (离散余弦变换) 31.4.3排列 DCT 结果 41.4.4  量化 41.4.5 huffman 编码 51.5 可行性研究 71.5.1经济可行性 71.5.2 技术可行性 71.5.3 运行可行性 7第二章 图像压缩理论基础及开发流程 82.1 图像压缩 82.2  JPEG 92.3 离散余弦变换 92.4 图像的量化 102.5 游程编码 122.6 哈夫曼编码 122.7 系统开发理论流程 142.7.1 颜色转换及采样 142.7.2 二维DCT变换 142.7.3 量化 142.7.4 游程编码,ZIGZAG扫描 152.7.5 哈夫曼编码 15第三章 需求分析 163.1 需求分析的任务 163.2 系统功能分析 163.3 系统需求分析的步骤 163.4 系统功能模块设计 16第四章  总体设计 174.1  系统设计的原则 174.2  设计目标 174.3  系统开发平台 174.3.1 软件配置 174.3.2 硬件配置 184.4 系统开发方法及技术路线 18第五章 详细设计 205.1 代码设计 205.1.1 程序列表 215.2 公共模块(Module)设计 255.3  各模块的功能介绍 255.3.1各菜单功能 255.4 软件演示 25第六章 测试与维护 306.1 测试 306.2 维护 30总结 31参考文献 32致谢 33附录 用户手册 341.1  系统概述 341.2  运行环境 341.3  使用说明 341.4  系统的遗留问题 34
 
论文摘要本论文主要介绍了JPEG的编码和解码过程。该程序的编码部分能把一张BMP格式的图象进行JEPG编码,压缩成以二进制形式保存的文件;通过相应的解码程序又可以把图象解压缩出来。在图象传送过程中,我们经常采用JPEG格式对静态图象进行编码。JPEG基本系统是一种有损编码,无法完全恢复出原图象,信息有一定的丢失,称为有损压缩。尽管我们希望能够无损压缩,但是通常有损压缩的压缩比(即原图象占的字节数与压缩后图象占的字节数之比,压缩比越大,说明压缩效率越高)比无损压缩的高。JPEG编码先把图象色彩RBG变成亮度Y和色度Cr、Cb,它利用人的视觉对色度不敏感的特点,减少一部分色度数据,以达到压缩。JPEG采取多种编码方式,包含有行程编码(Run Length Coding)和哈夫曼(Huffman)编码,有很高的压缩比。在编码前,先对数据进行分块,离散余弦变换(DCT)及量化,保留能量大的低频信号,丢弃高频信号以达到压缩。解码时,进行熵解码,反量化,反离散余弦变换(IDCT)。
关键字:JPEG;有损压缩;行程编码;哈夫曼编码 
AbstractThis paper introduces the encoding and decoding of JPEG and the specific realization of program on vc++ platform. The encoding part of this program can encode a picture whose format is BMP and save relevant data as binary system. The decoding program can decode the compression data and reconstruct the origin image. While conveying pictures we often encode still pictures into the style of JPEG. JPEG is of lossy compression which can not recover all the image data, some data are losed. Although we refer to non-lossy compression, however, the compression ratio of lossy compression( the times that data bytes before compression to that after compression )is bigger than that of non-lossy compression.  JPEG encoding translate image color from RBG to luminance Y and chroma Cr、Cb. Because people’ eyes are less sensitive to chroma comparing with luminance , some of chroma data are abandoned to reduce data size.JPEG envolves some kinds of ways of encoding including Run Length Coding and Huffman Coding, so it has high compression ratio. Before Coding ,we divide data into blocks , DCT and quantify each block. The low-frequency signals that have more energy are maintained and others are rejected . While decoding , data stream are readed , decoded , inverse-quantified and then IDCT .
Keywords:  JPEG;lossy compression;Run Length Coding;Huffman Code
 
基于JPG标准的图像压缩算法+代码+论文第一章   绪论1.1 研究的动机和目的信息时代,人们对使用计算机获取信息、处理信息的依赖性越来越高。计算机系统面临的是数值、文字、语言、音乐、图形、动画、静图像、电视视频图像等多种媒体。数字化的视频和音频信号的数量之大是惊人的,对于电视画面的分辨率640×480的彩色图像,30帧/s,则一秒钟的数据量为:640×480×24×30=221.12M,所以播放时,需要221Mbps的通信回路。存储时,1张CD可存640M,则仅可以存放 2.89s的数据。大数据量的图像信息会给存储器的存储容量,通信干线信道的带宽,以及计算机的处理速度增加极大的压力。单纯靠增加存储器容量,提高信道带宽以及计算机的处理速度等方法来解决这个问题是不现实的,这时就要考虑压缩。1.2 研究的背景随着多媒体技术的快速发展,静止图像的应用越来越广泛。它的应用主要集中在图像的存储和图像的传输两方面,从具体应用中我们可以发现静止图像占用了越来越多的资源。在这样的背景条件下,静止图像的压缩成为了一个研究的热点。目前静止图像的压缩算法以JPEG(Joint Photographic Experts Group)和JPEG2000为主。JPEG是第一个被广泛接受的单色和彩色静止图像压缩标准,它的名字源于“Joint Photographic Experts Group(联合图像专家组)”,它是由ISO/和CCITT协同工作的机构,这个机构的工作成果是ISO的国际标准ISO/IEC10918-1(连续色调静止图像的数字压缩和编码,digital compression and coding of continuous tone still images)和ITU-T的建议T.81。JPEG标准草案于1991年公布,1992年正式批准为国际标准,以后这个工作组的进一步增强和扩展形成了ISO 10918-3和ITU-T建议T.81。JPEG是一种采用预测编码(DPCM)、离散余弦变换(DCT)以及熵编码,以去除冗余的图像和彩色数据的有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,因此容易造成图像数据的损伤。尤其是使用过高的压缩比例,将使最终解压缩后恢复的图像质量明显降低,如果追求高品质图像,不宜采用过高压缩比例。但是JPEG压缩技术十分先进,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,也即可以用最少的磁盘空间得到较好的图像品质。而且 JPEG是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩比例对文件进行压缩,支持多种压缩级别,压缩比率通常在10:1到40:1之间,压缩比越大,品质就越低;相反地,压缩比越小,品质就越好。比如可以把1.37Mb的BMP位图文件压缩至20.3KB。当然也可以在图像质量和文件尺寸之间找到平衡点。JPEG格式压缩的主要是高频信息,对色彩的信息保留较好,适合应用于互联网,可减少图像的传输时间,可以支持24bit真彩色,也普遍应用于需要连续色调的图像。 JPEG的核心算法是DCT变换编码,其压缩性能基本反映了20世纪80年代末图像压缩的技术水平。但自从JPEG制定后的近10年,许多更有效的图像压缩技术已经得到发展,如小波变换方法、分形方法、区域划分方法等。其中,发展最成熟和性能及通用性最好的静止图像压缩方法是小波变换方法。正因如此,制定了第二代静止图像压缩标准,即JPEG2000,它的核心技术正是小波变换编码。其核心编解码器采用小波变换、算术编码及嵌入式分层组织,较以往的静止图像压缩标准复杂,它在同一个码流中实现了无损和有损压缩、分辨率和信噪比的累进性以及随机访问等优良特性。JPEG2000作为JPEG的升级版,其压缩率比JPEG高约30%左右,同时支持有损和无损压缩。JPEG2000格式有一个极其重要的特征在于它能实现渐进传输,即先传输图像的轮廓,然后逐步传输数据,不断提高图像质量,让图像由朦胧到清晰显示。此外,JPEG2000还支持所谓的"感兴趣区域" 特性,可以任意指定影像上感兴趣区域的压缩质量,还可以选择指定的部分先解压缩。 1.3 研究内容JPEG压缩格式是目前图像处理领域里面用得最广泛的一种图像压缩方式,本毕业设计将进行就JPEG标准对图像进行编、解码的研究。主要内容包括:1)从BMP格式图像的文件中(未压缩)读出图像,并能显示。   2)将BMP图像数据以JPEG标准压缩,保存为*.JPG文件。3)要求能读出jpg文件,并显示在界面上其中,JPEG的压缩实现主要分成四个步骤:   1)颜色模式转换及采样;   2)DCT变换(离散余弦变换);3)量化;4)编码(有算术编码和哈夫曼编码两种,这里采用哈夫曼编码)。1.4 系统原理1.4.1  色彩模型    JPEG 的图片使用的是 YCrCb 颜色模型,而不是计算机上最常用的 RGB。 关于色彩模型, 这里不多阐述。 只是说明, YCrCb 模型更适合图形压缩。 因为人眼对图片上的亮度 Y 的变化远比色度 C 的变化敏感。 我们完全可以每个点保存一个 8bit 的亮度值, 每 2x2 个点保存一个 Cr Cb 值, 而图象在肉眼中的感觉不会起太大的变化。 所以, 原来用 RGB 模型, 4 个点需要 4x3=12 字节。 而现在仅需要 4+2=6 字节; 平均每个点占 12bit。 当然 JPEG 格式里允许每个点的 C 值都记录下来; 不过 MPEG 里都是按 12bit 一个点来存放的, 我们简写为 YUV12。[R G B] -> [Y Cb Cr] 转换-------------------------(R,G,B 都是 8bit unsigned)        | Y  |  =  |  0.299       0.587       0.114 |   | R |     | 0 |        | Cb |  =  |- 0.1687    - 0.3313      0.5   | * | G |   + |128|        | Cr |  =  |  0.5       - 0.4187    - 0.0813|   | B |     |128|Y = 0.299*R + 0.587*G + 0.114*B  (亮度)Cb =  - 0.1687*R – 0.3313*G + 0.5*B +128Cr =    0.5*R – 0.4187*G – 0.0813*B +128[Y,Cb,Cr] -> [R,G,B] 转换R = Y  + 1.402  *(Cr-128)G = Y – 0.34414*(Cb-128) – 0.71414*(Cr-128)B = Y + 1.772  *(Cb-128)    一般, C 值 (包括 Cb Cr) 应该是一个有符号的数字, 但这里被处理过了, 方法是加上了 128。JPEG 里的数据都是无符号 8bit 的。1.4.2  DCT (离散余弦变换)    JPEG 里要对数据压缩,先要做一次DCT变换,DCT变换的原理涉及到数学知识,这里我们不必深究,反正和傅立叶变换(学过高数的都知道)是差不多的。经过这个变换,就把图片里点和点间的规律呈现出来了,更方便压缩。JPEG里是对每8x8个点为一个单位处理的。所以如果原始图片的长宽不是8的倍数,都需要先补成8的倍数,好一块块的处理。另外,记得刚才我说的Cr Cb都是2x2记录一次吗?所以大多数情况,是要补成16x16的整数块。按从左到右,从上到下的次序排列(和我们写字的次序一样)。JPEG里是对Y Cr Cb分别做DCT变换的。这里进行 DCT 变换的Y,Cr,Cb值的范围都是-128~127 (Y被减去128)    JPEG 编码时使用的是 Forward DCT (FDCT),解码时使用的 Inverse DCT (IDCT)下面给出其二维公式
 
基于JPG标准的图像压缩算法+代码+论文2D-FDCT:  2D-IDCT:
1.4.3排列 DCT 结果     DCT 将一个 8x8 的数组变换成另一个 8x8 的数组。 但是内存里所有数据都是线 形存放的, 如果我们一行行的存放这 64 个数字, 每行的结尾的点和下行开始的点就 没有什么关系, 所以 JPEG 规定按如下次序整理 64 个数字。                  0, 1, 5, 6,14,15,27,28,                  2, 4, 7,13,16,26,29,42,                  3, 8,12,17,25,30,41,43,                  9,11,18,24,31,40,44,53,                 10,19,23,32,39,45,52,54,                 20,22,33,38,46,51,55,60,                 21,34,37,47,50,56,59,61,                 35,36,48,49,57,58,62,63这样数列里的相邻点在图片上也是相邻的了。1.4.4  量化对于前面得到的 64 个空间频率振幅值, 我们将对它们作幅度分层量化,操作方法就是分别除以量化表里对应值并四舍五入。for i=1:64       dc(i)=round(B(i)/q(i));    end其中B(i)为经过余弦变换后的系数,q(i)为量化表数据;round()是进行四舍五入的数学函数。
    下面两张 JPEG 标准量化表。 (按上面同样的弯曲次序排列) 这两张表依据心理视觉阀制作, 对 8bit 的亮度和色度的图象的处理效果不错。当然我们可以使用任意的量化表。 量化表是定义在 jpeg 的 DQT 标记后。 一般为 Y 值定义一个, 为 C 值定义一个。     量化表是控制 JPEG 压缩比的关键。 这个步骤除掉了一些高频量, 损失了很高细节。 但事实上人眼对高空间频率远没有低频敏感。所以处理后的视觉损失很小。另一个重要原因是所有的图片的点与点之间会有一个色彩过渡的过程。 大量的图象信息被包含在低空间频率中。 经过量化处理后, 在高空间频率段, 将出现大量连续的零。    注意, 量化后的数据有可能超过 2 byte 有符号整数的处理范围。1.4.5 huffman 编码    为了提高储存效率, JPEG 里并不直接保存数值, 而是将数值按位数分成 16 组:          数值            组              实际保存值           0               0                   -         -1,1              1                  0,1     -3,-2,2,3           2              00,01,10,11-7,-6,-5,-4,4,5,6,7   3    000,001,010,011,100,101,110,111 -15,..,-8,8,..,15       4       0000,..,0111,1000,..,1111-31,..,-16,16,..,31      5     00000,..,01111,10000,..,11111-63,..,-32,32,..,63               6                   ……-127,..,-64,64,..,127             7                   ……-255,..,-128,128,..,255           8                   ……-511,..,-256,256,..,511           9                   ……-1023,..,-512,512,..,1023        10                   ……-2047,..,-1024,1024,..,2047      11                   ……-4095,..,-2048,2048,..,4095      12                   ……-8191,..,-4096,4096,..,8191      13                   ……-16383,..,-8192,8192,..,16383    14                   ……-32767,..,-16384,16384,..,32767  15                   ……DC 的编码例如:    (0,57) ; (0,45) ; (4,23) ; (1,-30) ; (0,-8) ; (2,1) ; (0,0)只处理每对数右边的那个:    57 是第 6 组的, 实际保存值为 111001 , 所以被编码为 (6,111001)    45 , 同样的操作, 编码为 (6,101101)    23  ->  (5,10111)   -30  ->  (5,00001)    -8  ->  (4,0111)     1  ->  (1,1)前面的那串数字就变成了:   (0,6), 111001 ; (0,6), 101101 ; (4,5), 10111; (1,5), 00001; (0,4) , 0111 ; (2,1), 1 ; (0,0)括号里的数值正好合成一个字节。 后面被编码的数字表示范围是  -32767…32767。合成的字节里, 高 4 位是前续 0 的个数, 低 4 位描述了后面数字的位数。继续刚才的例子, 如果 06 的 huffman 编码为 111000             69 = (4,5)    --- 1111111110011001             21 = (1,5)    ---  11111110110             4  = (0,4)    ---  1011             33 = (2,1)    ---  11011              0 = EOB = (0,0) ---  1010等号左边的是表示相应中间符号在huffman表中的位置。那么最后对于前面的例子表示的 63 个系数按位流写入 JPEG 文件中就是这样的:111000 111001  111000 101101  1111111110011001 10111   11111110110 000011011 0111   11011 1   1010记得刚才我们跳过了每组 64 个数据的第一个吧, DC 就是指的这个数字 (后面 63 个简称 AC) 代入前面的 FDCT 公式可以得到
即一块图象样本的平均值。 就是说, 它包含了原始 8x8 图象块里的很多能量。 (通常会得到一个很大的数值)    JPEG 的作者指出连续块的 DC 率之间有很紧密的联系,因此他们决定对 8x8 块的DC 值的差别进行编码(Y, Cb, Cr 分别有自己的 DC)。Diff = DC(i)  - DC(i-1)所以这一块的 DC(i) 就是:  DC(i)  = DC(i-1)  + Diff    JPEG从 0 开始对 DC 编码, 所以 DC(0)=0。 然后再将当前 Diff 值加在上一个值上得到当前值。   1.5 可行性研究1.5.1经济可行性软件编码的耗费主要是人力和时间。最终的软件是个人或者团队的智慧结晶。智力成本的凝聚产生的无形资产是巨大的。图像在当今信息社会中扮演着举足轻重的角色,而其占用的资源又是海量的。在追求时间和空间的今天,研究图像压缩是切实可行的。1.5.2 技术可行性基于对图像编,解码的研究,对图像重新编码后,达到对数据的压缩,是完全可以实现的。本设计采用Vc++平台,通过颜色转换及采样、量化、游程编码,ZIGZAG扫描, 哈夫曼编码几个过程 实现对 图像的压缩。1.5.3 运行可行性本设计的最终编译成果是脱离Vc++环境的,可独立执行的exe 文档。
 
基于JPG标准的图像压缩算法图像压缩理论基础及开发流程2.1 图像压缩压缩的理论基础是信息论。从信息论的角度来看,压缩就是去掉信息中的冗余,即保留不确定的信息,去掉确定的信息(可推知的),也就是用一种更接近信息本质的描述来代替原有冗余的描述。这个本质的东西就是信息量(即不确定因素)。 压缩可分为两大类:第一类压缩过程是可逆的,也就是说,从压缩后的图象能够完全恢复出原来的图象,信息没有任何丢失,称为无损压缩;第二类压缩过程是不可逆的,无法完全恢复出原图象,信息有一定的丢失,称为有损压缩。选择哪一类压缩,要折中考虑,尽管我们希望能够无损压缩,但是通常有损压缩的压缩比(即原图象占的字节数与压缩后图象占的字节数之比,压缩比越大,说明压缩效率越高)比无损压缩的高。 图象压缩一般通过改变图象的表示方式来达到,因此压缩和编码是分不开的。图象压缩的主要应用是图象信息的传输和存储,可广泛地应用于广播电视、电视会议、计算机通讯、传真、多媒体系统、医学图象、卫星图象等领域。 压缩编码的方法有很多,主要分成以下四大类:(1)象素编码;(2)预测编码;(3)变换编码;(4)其它方法。 所谓象素编码是指,编码时对每个象素单独处理,不考虑象素之间的相关性。在象素编码中常用的几种方法有:(1)脉冲编码调制(Pulse Code Modulation,简称PCM);(2)熵编码(Entropy Coding);(3)行程编码(Run Length Coding);(4)位平面编码(Bit Plane Coding)。其中我们要介绍的是熵编码中的哈夫曼(Huffman)编码和行程编码(以读取.PCX文件为例)。 所谓预测编码是指,去除相邻象素之间的相关性和冗余性,只对新的信息进行编码。举个简单的例子,因为象素的灰度是连续的,所以在一片区域中,相邻象素之间灰度值的差别可能很小。如果我们只记录第一个象素的灰度,其它象素的灰度都用它与前一个象素灰度之差来表示,就能起到压缩的目的。如248,2,1,0,1,3,实际上这6个象素的灰度是248,250,251,251,252,255。表示250需要8个比特,而表示2只需要两个比特,这样就实现了压缩。 常用的预测编码有Δ调制(Delta Modulation,简称DM);微分预测编码(Differential Pulse Code Modulation,DPCM),具体的细节在此就不详述了。 所谓变换编码是指将给定的图象变换到另一个数据域(如频域)上,使得大量的信息能用较少的数据来表示,从而达到压缩的目的。变换编码有很多,如(1)离散傅立叶变换(Discrete Fourier Transform,简称DFT);(2)离散余弦变换(Discrete Cosine Transform,简称DCT);(3)离散哈达玛变换(Discrete Hadamard Transform,简称DHT)。 其它的编码方法也有很多,如混合编码(Hybird Coding)、矢量量化(Vector Quantize,VQ) 、LZW算法。在这里,我们只介绍LZW算法的大体思想。2.2  JPEGJPEG是第一个被广泛接受的单色和彩色静止图像压缩标准,它的名字源于“Joint Photographic Experts Group(联合图像专家组)”,它是由ISO/和CCITT协同工作的机构,这个机构的工作成果是ISO的国际标准ISO/IEC10918-1(连续色调静止图像的数字压缩和编码,digital compression and coding of continuous tone still images)和ITU-T的建议T.81。JPEG标准草案于1991年公布,1992年正式批准为国际标准,以后这个工作组的进一步增强和扩展形成了ISO 10918-3和ITU-T建议T.81。JPEG是一种采用预测编码(DPCM)、离散余弦变换(DCT)以及熵编码,以去除冗余的图像和彩色数据的有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,因此容易造成图像数据的损伤。尤其是使用过高的压缩比例,将使最终解压缩后恢复的图像质量明显降低,如果追求高品质图像,不宜采用过高压缩比例。但是JPEG压缩技术十分先进,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,也即可以用最少的磁盘空间得到较好的图像品质。而且 JPEG是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩比例对文件进行压缩,支持多种压缩级别,压缩比率通常在10:1到40:1之间,压缩比越大,品质就越低;相反地,压缩比越小,品质就越好。比如可以把1.37Mb的BMP位图文件压缩至20.3KB。当然也可以在图像质量和文件尺寸之间找到平衡点。JPEG格式压缩的主要是高频信息,对色彩的信息保留较好,适合应用于互联网,可减少图像的传输时间,可以支持24bit真彩色,也普遍应用于需要连续色调的图像。 2.3 离散余弦变换Ahmed 等人于70年代提出的离散余弦变换(DCT-Discrete Cosine Transform)压缩算法,降低视频信号的空间冗余度。DCT将运动补偿误差或原画面信息块转换成代表不同频率分量的系数集,这有两个优点:其一,信号常将其能量的大部分集中于频率域的1个小范围内,这样一来,描述不重要的分量只需要很少的比特数;其二,频率域分解映射了人类视觉系统的处理过程,并允许后继的 量化过程满足其灵敏度的要求。视频信号的频谱线在0-6MHz范围内,而且1幅视频图像内包含的大多数为低频频谱线,只在占图像区域比例很低的图像边缘的视频信号中才含有高频的谱线。因此,在视频信号数字处理时,可根据频谱因素分配比特数:对包含信息量大的低频谱区域分配较多的比特数,对包含信息量低的高频 谱区域分配较少的比特数,而图像质量并没有可察觉的损伤,达到码率压缩的目的。然而,这一切要在低熵(Entropy)值的情况下,才能达到有效的编码。能否对一串数据进行有效的编码,取决于每个数据出现的概率。每个数据出现的概率差别大,就表明熵值低, 可以对该串数据进行高效编码。反之,出现的概率差别小,熵值高,则不能进行高效编码。视频信号的数字化是在规定的取样频率下由A/D转换器对视频电平转换而来的,每个像素的视频信号幅度随着每层的时间而周期性地变化。每个像素的平均信息量的总和为总平均信息量,即熵值。由于每个视频电平发生几乎具有相等的概率,所以视频信号的熵值很高。 熵值是一个定义码率压缩率的参数,视频图像的压缩率依赖于视频信号的熵值,在多数情况下视频信号为高熵值,要进行高效编码,就要将高熵值变为低熵值。怎样变成低熵值呢?这就需要分析视频频谱的特点。大多数情况下,视频频谱的幅度随着频率的升高而降低。其中 低频频谱在几乎相等的概率下获得0到最高的电平。与此相对照,高频频谱通常得到的是低电平及稀少的高电平。显然,低频频谱具有较高的熵值,高频频谱具有较低的熵值。据此,可对视频的低频分量和高频分量分别处理,获得高频的压缩值。由上可见,码率压缩基于变换编码和熵值编码两种算法。前者用于降低熵值,后者将数据变为可降低比特数的有效编码方式。在MPEG标准中,变换编码采用的是DCT,变换过程本身虽然并不产生码率压缩作用,但是变换后的频率系数却非常有利于码率压缩。 实际上压缩数字视频信号的整个过程分为块取样、DCT、量化、编码4个主要过程进行-----首先在时间域将原始图像分成N(水平)×N(垂直)取样块,根据需要可选择4×4、4×8、8×8、8×16、16×16等块,这些取样的像素块代表了原图像帧各像素的灰度值,其范围在139-163之间,并依序送入DCT编码器,以便将取样块由时间域转换为频率域的DCT系数块。DCT系统的转换分别在每个取样块中进行,这些块中每个取样是数字化后的值,表示一场中对应像素的视频信号幅度值。离散余弦变换DCT(Discrete Cosine Transform)是数码率压缩需要常用的一个变换编码方法。任何连续的实对称函数的付立叶变换中只含余弦项,因此余弦变换与付立叶变换一样有明确的物理意义。DCT是先将整体图像分成N*N像素块,然后对N*N像素块逐一进行DCT变换。由于大多数图像的高频分量较小,相应于图像高频分量的系数经常为零,加上人眼对高频成分的失真不太敏感,所以可用更粗的量化。因此,传送变换系数的数码率要大大小于传送图像像素所用的数码率。到达接收端后通过反离散余弦变换回到样值,虽然会有一定的失真,但人眼是可以接受的。2.4 图像的量化 图像的量化就是将取样后图像的每个样点的取值范围分成若干区间,并仅用一个数值代表每个区间中的所有取值。 量化时,量化值与实际值会产生误差,这种误差称为量化误差或量化噪声。可用信噪比来度量,但量化噪声与一般噪声是有区别的: 1)量化噪声由输入信号引起,可根据输入信号推测出来,而一般噪声与输入信号无任何直接关系。 2)量化误差是量化器高阶非线性失真的产物,是高阶非线性的特例。 量化分为标量量化和矢量量化。    在JPEG中将浮点型数表示的变换结果用标量量化后的整型数表示,随之而引起的误差在经过反向离散余弦变换而传递到图像,由于人眼对对这个误差几乎是察觉不到的,所以量化的过程是可行的。同时,为了达到更高的压缩比,又尽可能地保持原来图像的质量,JPEG通过多次实验,结合人眼的视觉特性,有针对性地设计相应的量化表。这种针对性是指对在图像中占有较大能量的低频成分,赋予较小的量化间隔和较多的比特以较为精确地表示原来的系数值,这样以达到尽量保持原始图像的视觉效果的前提下,获得较高的压缩比。      为了达到压缩数据的目的,对DCT系数需作量化处理。量化的作用是在保持一定质量前提下,丢弃图像中对视觉效果影响不大的信息。量化是多对一映射,是造成DCT编码信息损失的根源。JPEG标准中采用线性均匀量化器,量化过程为对64个DCT系数除以量化步长并四舍五入取整,量化步长由量化表决定。量化表元素因DCT系数位置和彩色分量的不同而取不同值。量化表为8x8矩阵,与DCT变换系数一一对应。量化表一般由用户规定JPEG标准中给出了参考值,并作为编码器的一个输入。量化表中元素为1到255之间的任意整数,规定了其所对应DCT系数的量化步长。DCT变换系数除以量化表中对应位置的量化步长,并去掉小数部分,其他变为零,从而达到了压缩的目的。      在JPEG量化过程中,量化表中的某个对应值用于相对应的系数值进行量化处理。量化过程就是简单地将变换系数除以量化阶后再取整。如果用C(k,1)表示量化后的系数,量化处理      从灵活性的角度出发,JPEG从没有规定量化表,仅是推荐了亮度和灰度两个量化表。根据具体要求可以构造专用的量化表,所推荐的量化表是针对灰度为8的图像源。使用该量化表,图像可达到失真不明显的主观质量。因此,只要线性地改变量化表中的量化阶就可控制重建图像质量以及相应的压缩比,在JPEG中通过调整一个公共因子来实现。      量化后的DCT变换值,低能量区域被量化成零,而高能量区域即低频区则保留下来,这样只要将保留下的低频值进行编码,就可以在允许误差的条件下存储图像的重要信息以用来还原图像。  量化是对经过FDCT变换后的频率系数进行量化,量化的目的是减小非“0”系数的幅度以及增加“0”值系数的数目,量化是图像质量下降的最主要原因
 
基于JPG标准的图像压缩算法代码论文|图形图像|免费论文游程编码游程编码又称“运行长度编码”或“行程编码”,是一种统计编码,该编码属于无损压缩编码。对于二值图有效。     行程编码的基本原理是:用一个符号值或串长代替具有相同值的连续符号(连续符号构成了一段连续的“行程”。行程编码因此而得名),使符号长度少于原始数据的长度。 例如:5555557777733322221111111 行程编码为:(5,6)(7,5)(3,3)(2,4)(l,7)。可见,行程编码的位数远远少于原始字符串的位数。     在对图像数据进行编码时,沿一定方向排列的具有相同灰度值的像素可看成是连续符号,用字符串代替这些连续符号,可大幅度减少数据量。     行程编码分为定长行程编码和不定长行程编码两种类型。     行程编码是连续精确的编码,在传输过程中,如果其中一位符号发生错误,即可影响整个编码序列,使行程编码无法还原回原始数据。2.6 哈夫曼编码哈夫曼(Huffman)编码是一种常用的压缩编码方法,是Huffman于1952年为压缩文本文件建立的。它的基本原理是频繁使用的数据用较短的代码代替,较少使用的数据用较长的代码代替,每个数据的代码各不相同。这些代码都是二进制码,且码的长度是可变的。举个例子:假设一个文件中出现了8种符号S0,S1,S2,S3,S4,S5,S6,S7,那么每种符号要编码,至少需要3比特。假设编码成000,001,010,011,100,101,110,111(称做码字)。那么符号序列S0S1S7S0S1S6S2S2S3S4S5S0S0S1编码后变成000001111000001110010010011100101000000001,共享了42比特。我们发现S0,S1,S2这三个符号出现的频率比较大,其它符号出现的频率比较小,如果我们采用一种编码方案使得S0,S1,S2的码字短,其它符号的码字长,这样就能够减少占用的比特数。例如,我们采用这样的编码方案:S0到S7的码字分别01,11,101,0000,0001,0010,0011,100,那么上述符号序列变成011110001110011101101000000010010010111,共享了39比特,尽管有些码字如S3,S4,S5,S6变长了(由3位变成4位),但使用频繁的几个码字如S0,S1变短了,所以实现了压缩。上述的编码是如何得到的呢?随意乱写是不行的。编码必须保证不能出现一个码字和另一个的前几位相同的情况,比如说,如果S0的码字为01,S2的码字为011,那么当序列中出现011时,你不知道是S0的码字后面跟了个1,还是完整的一个S2的码字。我们给出的编码能够保证这一点。下面给出具体的Huffman编码算法。(1) 首先统计出每个符号出现的频率,上例S0到S7的出现频率分别为4/14,3/14,2/14,1/14,1/14,1/14,1/14,1/14。(2) 从左到右把上述频率按从小到大的顺序排列。(3) 每一次选出最小的两个值,作为二叉树的两个叶子节点,将和作为它们的根节点,这两个叶子节点不再参与比较,新的根节点参与比较。(4) 重复(3),直到最后得到和为1的根节点。将形成的二叉树的左节点标0,右节点标1。把从最上面的根节点到最下面的叶子节点途中遇到的0,1序列串起来,就得到了各个符号的编码。上面的例子用Huffman编码的过程如图9。1所示,其中圆圈中的数字是新节点产生的顺序。可见,我们上面给出的编码就是这么得到的。 图2-1   Huffman编码的示意图产生Huffman编码需要对原始数据扫描两遍。第一遍扫描要精确地统计出原始数据中,每个值出现的频率,第二遍是建立Huffman树并进行编码。由于需要建立二叉树并遍历二叉树生成编码,因此数据压缩和还原速度都较慢,但简单有效,因而得到广泛的应用。2.7 系统开发理论流程2.7.1 颜色转换及采样(1)颜色转换:对BMP图像中的颜色数据进行由RGB一YCbCr的转换,Y表示亮度,Cb Cr分别表示蓝色度和红色度。转换公式:Y=0.2990R+0.5870G+0.1140BCb=-0.1687R-0.3313G+0.5000BCr=0.5000R-0.4187G-0.0813B这样转换以后就得到三个新的基色值,对这三个基色值来讲,都可以当作一个独立的图像平面来进行压缩编码。(2)采样:颜色转换后,保留每一点的亮度值Y,而色度值Cb Cr则是每两点保留一点,在图像的行和列方向上都可执行颜色采样。如果采用的是1:1:1的采样比例,不用抽样。若采用的采样比是行列方向都是2:1:1,在行方向,每两点保留一点,列方向也是每两点保留一点,这样如果假设原来的CbCr矩阵大小为M*S,则经过2:1:1抽样之后成了M/2*s/2=1/4M*S,只有原来的1/4了,图像大大缩小,如果想减小图像的失真度,则可行方向不抽样或列方向不抽样。2.7.2 二维DCT变换    二维DCT变换公式为:F(u,v)= 注:x,y代表图像数据矩阵中的某个数据值的坐标位置f(x,y)指图像数据矩阵中该点的资料值u,v指经过DCT变换后矩阵中的某数值点的坐标位置,在这里u=x,v=yF(u,v)指经过DCT变换后该坐标点的资料值。当u=0,v=0时,C(u)C(v)=1.414/2当u>0,v>0时,C(u)C(v)=1,经过变换后的资料值F(u,v)称为频率系数(或称DFT系数)。2.7.3 量化量化过程实质上是把亮度数据Y和色度数据Cb/Cr由时域转变成频域(DCT变换)并滤除高频分量的过程,由于人眼对高频分量不敏感,所以可以滤除高频分量,经过量化以后的每一个8*8数据块中,左上角第一个元素数据值为直流分量,称为DC,其余63个资料为交流分量,称为AC。2.7.4 游程编码,ZIGZAG扫描经过量化后的DCT系数矩阵,除DC值一般不为零外,AC系数大多是在零点附近的浮点数。经过取整以后,每一个8*8块中,有大量的AC系数的值为0。为了把尽可能多的其值为0的AC系数串在一起,以利于AC编码及提高压缩比,还必须把YCbCr矩阵中的每一个8*8块中的64个元素进行“之”字形排序(这样就可以做到把尽可能多的0串在一起)。其过程示意图如下。 图2-2 量化后的系数按Z字型扫描     箭头方向表示“之”字形排序以后原8*8中元素的新的位置顺序。2.7.5 哈夫曼编码哈夫曼编码是一种一致性编码法(又称"熵编码法"),用于数据的无损耗压缩。它使用一张特殊的编码表将源字符(例如某文件中的一个符号)进行编码。编码表是根据每一个源字符出现的估算概率而建立起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)。
 
基于JPG标准的图像压缩算法+代码+论文需求分析3.1 需求分析的任务通过需求分析要确立软件设计的任务,即系统要实现的功能,进而划分出实现特定功能的模块。然后将其有机的结合起来,即构成了可以实现特定功能的目标系统。3.2 系统功能分析1)从BMP格式图像的文件中(未压缩)读出图像,并能显示。2)将BMP图像数据以JPEG标准压缩,保存为*.JPG文件。3)要求能读出jpg文件,并显示在界面上。3.3 系统需求分析的步骤1)需求获取:由于社会的发展对时间和空间的追求,需要对在信息交流中扮演重要角色的图像进行压缩。2)需求提炼, 分析建模:即建立常用的控制流图、状态转换图、类对象关系及行为图。3)需求描述:编写SRS-软件需求规格说明书。4)需求验证。3.4 系统功能模块设计根据系统功能的要求,可将系统分解成几个功能模块来分别设计,功能流程图如下。JPEG的压缩原理其实上面介绍的那些原理的综合,博采众家之长,这也正是JPEG有高压缩比的原因。其编码器的流程如下。 图3-1    JPEG编码器流程
第四章  总体设计经过需求分析的工作系统必须“做什么”已经清楚了,现在是解决“怎样做”的问题的时候了。总体设计的基本目标是回答“概括的说,系统应该如何实现?”这个问题,因此,总体设计又称为概要设计或初步设计。通过这个阶段的工作将划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等等,但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后的设计中。总体设计阶段的另一项重要任务是设计软件的结构,也就是确定系统中每个程序是有哪些模块组成的,以及这些模块的相互关系。总体设计过程首先寻找实现目标系统的不同方案,需求分析阶段得到的数据流图是设想各种方案的基础。然后分析员从这些供选择的方案中选取若干个合理的方案,为每个合理的方案都准备一份系统流程图,列出组成系统的所有物理元素,进行成本、效益分析,并且制定实现这个方案的进度计划。分析员应该综合分析比较这些合理的方案,从中选择一个最佳的方案向用户和使用部门负责人推荐。如果用户的使用部门的负责人接受了推荐的方案,分析员应该进一步为这个最佳方案设计的软件结构,通常,设计出的初步软件结构后还要有很多改进,确定测试要求并且指定测试计划。4.1  系统设计的原则随着系统规模的扩大,模块化的开发方法得到了越来越广泛的应用。系统设计模块化的程度可以由下面的几个特性来描述:1)可扩展性: 也就是系统的维护性,在系统产生新的需求时,不用修改程序直接利用系统的扩展性就可解决。2)分解性: 将一个大型系统分解为若干的子系统模块。  3)组装性: 子系统模块实现后,可以方便地用于构建新的大型系统。4)可移植性: 为了适应今后的发展,要求系统具有可移植性强的特性。5)保护性: 在模块发生错误时减少副作用的发生。4.2  设计目标基于对图像编,解码的研究,对图像重新编码后,达到对数据的压缩。4.3  系统开发平台4.3.1 软件配置操作系统:Windows 2000 Sever或更高;开发平台:Visual studio 2005。4.3.2 硬件配置CPU:PⅡ266或更高;内存:64MB以上硬盘:2G以上显示器:VGA或更高;4.4 系统开发方法及技术路线本设计拟采用VC++来实现。程序实现的各个步骤如下。1)读取BMP图像信息,获取图像行像素和列像素数值,在BMP图像中,图像数据是以倒序存放的。亦即实际图像第一行资料存放在BMP图像数据矩阵的最后一行,依次类推,所以取资料的时候要从BMP图像数据矩阵的最后一行开始读起,把数据存放在新建数组(或称矩阵)的第一行,一直取完。BMP图像行像素和列像素的数值分别存于文件头信息的第18和22字节。从Cimage类中可得到Width(图像宽度)和hight(图像高度)的数值。2)得到Pwidth*Phight后便得知BMP图像的像素点大小,而数据矩阵(三基色,RGB矩阵)的大小是Pwidth*Phight*3,因为每一个像素点都含有RGB三个数据,我们要处理的是数据矩阵而不是像素点矩阵。所以,新建数组的大小是(Pwidth*3)*Phight。3)接下来,把这一个矩阵(包含BGR)拆分成三个独立的B、G、R矩阵,得到三个新的矩阵(只包含B的矩阵,只包含G的矩阵,只包含R的矩阵),简称为B矩阵、G矩阵、R矩阵(大小为Pwidth*Phight),用程序实现拆分,只要依次取原矩阵的第1、4、7、10、13......个资料即得到B矩阵,依次读取第2、5、8、11......个数据即得到G矩阵,依次读第3、6、9、12......个资料即得到R矩阵。得到B、G、R矩阵后再利用颜色转换公式很容易就可得到YCbCr矩阵。Y(n)=0.114B(n)+0.587G(n)+0.299R(n)Cb(n)=0.5B(n)-0.3313G(n)-0.1687R(n)Cr(n)=0.0813B(n)-0.14187G(n)+0.5R(n)(For n=1 To PW*PH),其中PW为Pwidth的简写,PH为Phight的简写。4)二维DCT变换由于VC中无法实现二维DCT计算公式,所以只有把二维的变换变成先做一维,再做另一维的变换,俗称快速DCT变换。快速DCT变换方法如下:设一个大小为8的数组SL(8),先读取一个8*8块的第一行资料值,赋给SL(8),对SL(8)进行一维DCT变换后得到一个新的SL(8)数组,再把SL(8)数组覆盖到原来的8*8块中相应的地方去。做完第一行后再做第二行,一直做完8行,一个8*8块的一维DC即告完成,然后再做列方向的第二维DCT变换,变换公式一样,只是由SL(8)取8*8块的行资料变成取列数值。做完后覆盖回原值,即得到一个8*8块的DFT系数块,再重复这两个过程做第二个8*8块......一直到做完全部8*8块(Y,Cb,Cr)。这样就得到Y、Cb、Cr的DFT系数矩阵。5)量化读取Y矩阵中第一个8*8块,与量化系数矩阵中对应的相乘,得到的值覆盖回原矩阵,然后做第二个8*8块,一直到做完全部8*8块,然后做CbCr矩阵的量化,用另外一个系数矩阵。6) “之”字形扫描7)哈夫曼编码哈夫曼编码时必须判断一个个DC(AC)的值,以及转换成二进制代码后的码长,再去对照哈夫曼编码表进行编码,比如对一个DC值编码,首先得先判断该DC的值在哪段范围内,在某一段范围内的数值,其二进制代码长相等。并要让程序知道该DC的值到底为多少,然后才能进行编码。 8)压缩过程完成以后,接下去要做的工作便是码串存贮,存贮时需要注意的—点是在抽样过程中得到1个Y块对应1个Cb块合一个Cr块的对应关系,在存贮时也要按这种对应关系存贮,即1个Y块的码串后面紧接着存放与其对应的一个Cb块的码串及一个Cr块的码串,循环往复,存完所有串。这样的1个Y8*8块+1个Cb块+1个Cr简称为MCU,是JPEG格式的最小存贮处理单元。
 
基于JPG标准的图像压缩算法详细设计在图像压缩系统设计过程中,系统的各项功能是分为一个一个的模块来实现的,多个模块都要用到的公共程序段,我们用公共函数的形式来做,这样,在整个系统中,模块之间看起来是相互独立的,有利于以后对系统的扩展,而彼此之间又有联系,尽可能使程序简洁又能够符合结构化程序设计的标准。5.1 代码设计    代码设计问题是一个科学管理的问题。设计出一个好的代码方案对于系统的开发工作是一件极为有利的事情。它可以使很多机器处理(如某些统计、查询等)变得十分方便,另外还把一些现阶段计算机很难处理的工作变成简单的处理。代码就是以数或字符来代表各种客观实体。在系统开发过程中设计代码的目的是:1) 唯一化    在现实世界中,有很多东西如果不加标识是无法区分的,这时机器处理就十分困难。所以能否将原来不确定的东西,唯一地加以标识是编制代码的首要任务。最简单,最常见的例子就是编号,在管理中不难发现,人的姓名不管在一个多么小的单位里都很难避免重名。为了避免二义性,唯一地标识每一个人,因此编制了代码。2) 规范化    唯一化虽是代码设计的首要任务。但如果仅仅为了唯一化来编制代码,那么代码编出来后可能是杂乱无章、无法辨认,而且使用起来也不方便。所以在唯一化的前提下还要强调编码的规范化。例如,纺织系统关于纺织工业产品标准编码的规定,以“2”打头表示纯毛类产品,其中“21”表示纯毛哔叽产品,“22”表示纯毛华达呢类产品,“24”表示纯毛花呢类产品等。这样在查找或统计某一类产品时就十分方便了。3) 系统化系统所用代码应尽量标准化。在实际工作中,一般企业所用大部分编码都有国家或行业标准。例如,在会计领域中,一级会计科目由国家财政部进行标准分类,二级科目由各部委或行业协会统一进行标准分类,而企业则只能对其会计业务中的明细账目,即对三,四级科目进行分类,并且这个分类还必须参照一、二级科目的规律进行。又如在产成品和商品中各行业都有其标准分类方法,所有企业必须执行。另外一些需要企业自行编码的内容,例如生产任务码、生产工艺码、零部件码等,都应该参照其它标准化分类和编码的形式来进行。
 
5.1.1 程序列表ChildFrm.cppChildFrm.hCqOctree.cppDib.cppDib.hdibapi.cppdibapi.hFormatJpeg.cppFormatJpeg.hHuffman.cppHuffman.hIP.cppJCONFIG.HJmorecfg.hJpeg.cppJpeg.hJPEGLIB.HMainFrm.cppMainFrm.hResource.hRWJpegExp.cppRWJpegExp.hRWJpegExpDoc.cppRWJpegExpDoc.hRWJpegExpView.cppRWJpegExpView.hStdAfx.cppStdAfx.hTifHeader.h
 
主界面代码如下。MainFrm:// MainFrm.cpp : implementation of the CMainFrame class//#include "stdafx.h"#include "RWJpegExp.h"#include "MainFrm.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CMainFrameIMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)//{{AFX_MSG_MAP(CMainFrame)// NOTE - the ClassWizard will add and remove mapping macros here.//    DO NOT EDIT what you see in these blocks of generated code !ON_WM_CREATE()//}}AFX_MSG_MAPEND_MESSAGE_MAP()static UINT indicators[] ={ID_SEPARATOR,           // status line indicatorID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,};/////////////////////////////////////////////////////////////////////////////// CMainFrame construction/destructionCMainFrame::CMainFrame(){// TODO: add member initialization code here}CMainFrame::~CMainFrame(){}int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)return -1;if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP  | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||  !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) {  TRACE0("Failed to create toolbar\n");  return -1;      // fail to create } if (!m_wndStatusBar.Create(this) ||  !m_wndStatusBar.SetIndicators(indicators,    sizeof(indicators)/sizeof(UINT))) {  TRACE0("Failed to create status bar\n");  return -1;      // fail to create } // TODO: Delete these three lines if you don't want the toolbar to //  be dockable m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); return 0;}BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs){ if( !CMDIFrameWnd::PreCreateWindow(cs) )
 
基于JPG标准的图像压缩算法return FALSE; // TODO: Modify the Window class or styles here by modifying //  the CREATESTRUCT cs return TRUE;}/////////////////////////////////////////////////////////////////////////////// CMainFrame diagnostics#ifdef _DEBUGvoid CMainFrame::AssertValid() const{ CMDIFrameWnd::AssertValid();}void CMainFrame::Dump(CDumpContext& dc) const{ CMDIFrameWnd::Dump(dc);}#endif //_DEBUG/////////////////////////////////////////////////////////////////////////////// CMainFrame message handlers5.2 公共模块(Module)设计为了提高代码的效率,方便维护,在Vc++ 中可以用公共模块来存放工程中经常使用的函数、过程和全局变量等。5.3  各模块的功能介绍5.3.1各菜单功能1)文件下拉菜单主要有:新建    创立一个新的窗口打开    打开一张图片(本系统支持 打开*.bmp /*.jpg)保存     保存另存为   改变存储路径,存储格式  打印    打印打印预览 打印预览打印设置 打印设置最近文件 最近浏览文件的历史纪录关闭 和 退出 都是 关闭当前对话框,推出软件2)查看菜单栏查看菜单栏主要有:工具栏和状态栏。工具栏 集成了 菜单 的 项目,用MicroSoft 通用图标来表示。状态栏显示当前软件的使用状态。3)帮助菜单 帮助菜单主要介绍本软件的版权信息。5.4 软件演示(1)打开程序这是一个用Vc++创建的一个图形界面。图标采用Microsoft Windows 通用图标。 图5-1(2)打开文件打开一个BMP文档 图5-2 图5-3(3)另存为 图5-4图像压缩 图5-5可调节的图像压缩比率 图5-6(5)保存后文件将BMP图像保存为JPG图像。 图5-7如果打开一个大小为2.25M的BMP图片,将压缩率调到100%,最终得到大小为115K的JPG文档。(2.25M->115K) 图5-8 图5-9到这里本设计已经达到设计要求。
 
基于JPG标准的图像压缩算法+代码+论文测试与维护6.1 测试测试是软件开发时期的最后一个阶段,也是软件质量保证中至关重要的一个环节。测试的目的是为了发现程序中的错误,是为了证明程序有错,而不能证明程序无错。测试具有挑剔性、复杂性、不彻底性、经济性等特征。本系统的测试步骤如下。1)先进性静态测试,即通过对被测程序的静态审查,发现代码中潜在的错误,如编译错误。2)再进行动态测试,动态测试工分二个步骤:黑盒测试与白盒测试,黑盒测试的目的是测试程序的功能,白盒测试的目的是测试程序的结构。本系统的黑盒测试采用等价分类法的测试方法,自顶向下的测试策略,深度优先的测试步骤。白盒测试采用任务测试,行为测试,任务间测试的测试方法。任务测试是对每一个任务都进行单独的白盒测试,它可以发现逻辑和功能上的错误;行为测试即用CASE工具创建应用系统模型模拟实时系统行为,测试的事件以随机次序、随机频率送给系统,检查软件行为方面的错误;任务间测试即用不同的数据速率处理负载测试相互通信的异步任务。通过消息队列或数据存储测试任务间的通信来找出数据存储区错误的范围。6.2 维护    软件的维护是软件的开发产品交付用户后,有软件开发公司对系统的运行所做的售后服务。软件维护的目的,是满足用户对已开发产品的性能与运行环境不断提高的需要,进而达到延长系统的寿命。    软件维护按照具体的维护目标分为:完善性维护、适应性维护和纠错性维护3类。    由于本系统尚属于开发阶段,并没有进入生命周期的最后一个时期---运行时期,所以暂时不需要进行系统维护。总结
这次毕业课题的设计包括毕业论文的写作和图像压缩系统的开发。通过毕业设计,使我对应用软件的开发过程有了详细的理解,把原来《软件工程》所讲的理论运用到了实践中。在程序开发中主要用的编程语言是Vc++,通过这一段的编程实习,对所用语言已经可以熟练掌握。在这半年 的毕业设计中我阅读了大量计算机专业文献,并将之应用到实际编程中,在自学能力和编程方面有了提高,这些对我以后的工作学习是一种很好的锻炼。在这次毕业设计的整个过程中,收获主要有以下几点:1)开始编程前,一定要了解系统意图,做好规划。2)很好地实现了理论知识与实践的结合。把以往所学的专业知识和编程思想应用到了实际设计当中,比较顺利地解决了毕业设计中遇到的一些问题。同时对所学的理论知识也有了更深刻、更系统的了解。同时也增强了运用所学知识解决实际问题的能力。3)通过这次毕业设计,很好的领会了程序设计的思想。建立了用Vc++进行程序设计的思维方式。通过比较掌握了Vc++的特性,也明白了Vc++与原来学的其它编程语言的区别。另外,掌握了学习一门语言的方法,为以后学习其它语言打好了基础。4)这次毕业设计中,我虚心向老师和其它同学请教,与其团结协作,很好地培养了我的团队精神和协作能力。通过学习和交流,看到了别人的优点,也发现了自己的不足,以后要进一步完善自己。
 
VC++基于JPG标准的图像压缩算法+代码+论文参考文献[1] 张旭东,卢国栋,冯健.图像编码基础和小波压缩技术——原理、算法和标准. 北京:清华大学出版社,2004[2] 钟玉琢.多媒体技术. 北京:清华大学出版社,1999[3] 黎洪松.数字图象压缩编码技术及其C语言程序范例.北京:学苑出版社,1998[4] 林福宗.图象文件格式大全.北京:清华大学出版社,1998[5] 郎锐.数字图像处理的Vc++实现. 北京:北京希望电子出版社,1996[6] 冈萨雷斯.数字图像处理(第二版). 北京:电子工业出版社,2003[7] 崔屹.数字图像处理技术与应用. 北京:电子工业出版社,1997[8] 陆宗骐.C/C++图像处理编程.北京: 清华大学出版社,2006[9] 何斌.Visual C++数字图像处理. 北京:人民邮电出版社,2001:685[10] 同志工作室.《Visual C++ 6.0开发技巧与实例教程》. 北京:人民邮电出版社,2000年5月第1版[11] 王耀南,李树涛,毛建旭.计算机图像处理与识别技术. 北京:高等教育出版社,2005:281[12] 张远鹏.计算机图像处理技术基础. 北京:北京大学出版社,1996:310[13] 黄贤武等.数字图像处理与压缩编码技术.成都:电子科技大学出版社,2000:538[14] P.K. Andleigh, K. Thakrar (徐光佑、史元春译). 多媒体系统设计,Prentice Hall, 1998. [15] Borko Furht, Stephen W. Smoliar, HongJiang Zhang. Video and image processing in multimedia systems, Kluwer Academic Publishers, Boston ,1995. [16] Vasudev Bhaskaran, Konstantinos Konstantinides. Image and video compression standards: algorithms and architectures, Kluwer Academic Publishers, Boston, 1995. [17] Ning Lu. Fractal imaging, Academic Press, San Diego, 1997 [18] Kenneth R. Castleman.Digital Image Processing ,Pearson Education,2003 :568[19] Mahesh Chand .Graphics Programming with GDI+,Addison-Wesley Professional,2003[20] http://www.lwfree.cn[21] http://www.251com.cn[22] http://www.751comcn致谢此次毕业设计是在王*老师精心指导和其它同学的帮助下完成的。从硬件的设计到软件的编写,调试无不浸透着王老师的心血和其它同学的努力。在这几个月的时间里,老师不仅以她严谨的科学态度、广博的学识,而且以她宽厚待人、真诚正直的品德对学生言传身教,这些都将使我受益终身。借此机会,我向老师表示最崇高的敬意和衷心的感谢。论文的完成过程中得到了计算机系教研室其它老师广大同学无私地帮助,在此对他们表示感谢。最后,衷心感谢各位专家在百忙之中对论文给予评审。由于作者水平和时间的限制,文中难免有不足,疏漏甚至错误之处,恳请给予批评指正,以便在今后的学习中进一步修正和完善,谢谢!!附录 用户手册1.1  系统概述本系统研究JPEG的编码和解码过程。该程序的编码部分能把一张BMP格式的图象进行JEPG编码,压缩成以二进制形式保存的文件。1.2  运行环境1)软件配置操作系统:Windows 2000 Sever或更高;开发平台:Visual studio 2005。2)硬件配置CPU:PⅡ266或更高;内存:64MB以上硬盘:2G以上显示器:VGA或更高;1.3  使用说明本系统可以读取*.bmp文档,然后另存为*.jpg文档。对于*.bmp文档进行按照JPG标准进行图像压缩。图像的压缩比可以调节(0%-100%)。压缩后即可保存为JPG文档。本系统支持读取*.bmp和*.jpg文档,并可以进行打印设置,打印。1.4  系统的遗留问题本系统没有通过相应的解码程序把图象解压缩出来,解码是编码的逆过程,由于时间紧迫没有完善此功能。系统菜单栏上存在的复制、剪贴和粘贴功能由于现在的系统不可以对图像进行编辑,所以没有开发。
 
论文英文文献简介除了强大. net平台,微软已推出一个新版本,其了Visual Studio套件. Visual Studio.NET是.NET平台下最为强大的开发工具,无论是软件服务商,还是企业应用程序的部署与发布,Visual Studio.NET都可以提供近乎完美的解决方案。vs.net有助于开发者迅速建立和部署应用编码任何管理语言, 包括C#. 本章让你熟悉新的特征和vs.net教你自定义来满足您的需要, 本章节涵盖了许多新的特点vs.net,包括. NET的Web服务,XML支持, 以及综合开发环境(IDE). 同时,我们采用了XML编辑器, 其中已竣工标签为extensiblestylesheetlanguagetransformations(xslts). 我们将会了解intellisense特点,以及它是如何使用 在不同的视窗. 最后,我们将会讲解如何在IDE中定制您的设定。vs.net是一个完整的开发环境.它的结构对于不管什么语言, 使它很容易转项目和语言,并在同一个地方,有相同的特点,. 同时,随着扩大intellisense与tag完成例行代码书写更快.介绍Visual Studio.NET开始页面上发表了大量的资源用于发展环境. 开始页是默认主页,浏览器内的IDE.你可以利用各方面的 IDE规划这些页.我们将会介绍三个最有用的起始页, 从"What’ new"页开始和"我的配置文件"页 而以" Get Started "为结尾.我们将会展示给你vs.net中有什么比较新鲜的,建立起你的简介, 然后开始使用工具. 让我们打开vs.net看一看起始页(见图3.1).您可以浏览起始页中的" What’ new ",什么话题是您感兴趣的 。我们选择 . NET框架. 所有的内容,在"what’s new"将变得基于您的选择,这样你可以节省一些时间,不找相对于vb的新的特点,举个例子,你也可以选择Check availability of Visual Studio.NET service packs从这个起始页开始查看 如果你需要最新的下载. 让我们看看"我的配置文件"页下,列于图3.2. Figure 3.1 VS.NET开始页面: What’s New Figure 3.2 VS.NET 开始页面: 我的配置文件 打开【我的配置文件】选项,可以配置个人喜好设置,包括帮助问题的过滤条件以及默认编程语言等。如果你是原先有VB的背景, 利用VB概况,将有利于使你能熟悉这些工具,从6vs. 同样, 一个C++或interdev用户从6vs将会从原来的环境来习惯.这将帮助你学习很快的熟悉学习环境. 你也可以选择外部的帮助,会将在IDE之外重新开启一个窗口。你可以选择帮助主题 , 我们已经选定. NET框架SDK提供的最新技术作为起始页. 您也可以选择窗口布局,你想用. 然后你可以选择Get Started 页面,显示如图3.3. 在这里你可以选择你以前做过项目, 当你的鼠标移过一个停靠窗口的时候,它会立即浮到屏幕上来。. 这是一个很好的特点,你可以利用两个项目虽然名称相同,但在不同 地点. 该起始页的默认页浏览窗口vs.net, 因此,如果你关闭,并希望重新打开,只需要简单的点击主页图标,就会显示网页的工具和页装载器.
VS.NET的组成在VisualStudio.NET中的IDE是由许多部件相互作用,彼此配合. 你可以单独或者同时使用,这将取决于使用者. 所有的部件共同构造了一个直观的图形用户界面(GUI). 设计窗口当您需要使用工具箱中的拖放控件时,您就需要切换到设计窗口Figure 3.3 VS.NET开始页面: Get Started 
当你需要设计时,你可以拖动工具箱中的控件拖放到设计窗口中. 和代码窗口一样,设计窗口,不能设置为停靠或设置为自动隐藏. 你可以把设计视图或选项组添加进去. 和代码分离的窗口,有助于当你需要比较文件(见图3.4). 在这里你可以看到Windows两个设计和代码. 这是一个C#的Web应用,但对任何项目功能是一样的。Figure 3.4 Split Window View 代码窗口正如我们前面提到的, 代码窗口是很象设计窗口。虽然可以看到工具箱, 然而你无法拖动控件到代码窗口。如果您在代码窗口设计了代码,然后切换回到设计窗口, 您增加的对象会在设计显示。您无法停靠这个窗口也不允许它漂浮。 然而, 您能分离它和增加新制表符组来显示。图3.5 展示代码窗口分离和制表符增加。如果您仔细的看图3.5, 您能看到在左边显示的是可折叠菜单。这将使得您创造类或作用时候, 使您可以折叠各个部分节省空间更加方便观察当前的代码窗口注意您必须有缺省选择概述方式被检查这工作。如果您想要有行号显示为您的代码, 您将必须选择工具| 选择。在选择对话箱, 选择Text/Editors 。选择C # 和然后选择选择有行号增加。Figure 3.5 Code View 您可以自己定义代码。简单地增加以下代码来使您的类起作用#region///代码和注释#endregion服务管理器服务器管理器是迄今为止vs.net中最重要的部分。 从这个窗口,可以连接到一个服务器的网络,并充分利用该服务器. 您还可以连接到在网络上任何数据库服务器. 让我们来看看如何做好这项工作. 单击连接到数据库图标在标题栏的窗口(见图3.6). 您将被提示 提供一切所需的资料,为通用数据链接(UDL).先填写通用数据链接向导和测试方面, 这样做了之后,你可以利用一切可能的数据库中用户的权利.你可以参看图3.7. Figure 3.6 服务器管理器连接数据库 Figure 3.7 展开数据库 您现在在服务器管理器中点击任一个对象并且可以编辑它。。相对于必须有询问分析仪并且VS.NET 同时打开和去反复在二之间交换一个被存放的做法输入参量的数据类型来说这样很节省时间。工具箱工具箱,如图3.8,包括数据的组件,Web表单,窗口的形式凸起. 和前面提到的一样,在这里,你可以用工具箱的设计视图窗口. 你可以拖放每个部件或控制到设计窗口. 另外,您可以定制工具箱中加入你自己的代码片段,并命名.这样做的话,右击的工具箱,并选择添加选项. 给它一个不同的名称,而你准备加入到自己的工具. 加入一个新的工具, 突出一个代码,你要成为一种工具,拖曳到你刚刚创建的工具箱标签中. 剪贴板中存放的所有项目,你必须复制代码. 你可以双击这些并放入他们的源代码.
 
基于JPG标准的图像压缩算法代码论文|图形图像|免费论文Figure 3.8 工具箱 停靠窗口vs.net中的一个新的特点就是你可以在IDE中停靠或扩大所有窗口在您的IDE添加窗口,浏览到标准工具栏,选择查看; 在这里你可以选择所有的窗口使得窗口可以很好的运行一个缺点是,你们将不会有很大的空间,留下来工作,如果你选择 很多窗口显示, 但其自动隐藏的特点使得每个窗口,嵌入在一旁当 不需要. 这使您有最大的看代码的区域,但仍然有所有窗口出现。看到一个窗口,有自动隐藏的功能, 当你将鼠标移至窗口图标两旁IDE中. 你可以使每个窗口停靠,进入的地方按一下个人密码或航行的标准和工具 选择窗口菜单. 一旦窗口停靠,这是永远存在; 但是你可以,使窗口浮动,选择窗口|浮动(见图3.9). Figure 3.9 Floating Window 属性管理器属性管理器和和VisualBasic的IDE与visualinterdev的IDE很相似.从设计窗口中选择一个对象,在属性管理器中 您会看到可用属性被列出来了,如图3.10. 右栏列出了属性名称,而左栏显示的是属性的值. 属性窗口, 无论你们正在建设做任何编码,快速应用开发(RAD),允许你快速创建一个图形化的应用并更改一些可供选择的属性. 你想观看时,你可以选择从下拉列表中的对象, 您也可以选择活动方案和活动提供给该对象展示. 你可以选择属性按类别或字母顺序. 所作的任何更改,将分别在此窗口将创建的设计窗口显示出来。
Figure 3.10 Properties Explorer 对象浏览器对象浏览器会在您的解决方案给你一个完整的清单,各级的方法和性能.所有的都被列出来,而且很深入. 如果你愿意, 你可以翻看父类,你你可能 需要列出的方法和性能, 双击外部类, 对象浏览器将负载所有父类和子类上市与各自方法和属性.这使得你需要找到一个合适的替代类来处理部分您的申请时很方便. 如JAVA . net有一个令人难以置信的数量内置类,可以完成对所有你可能需要麻烦的是找到 其位置以及如何获得它们的方法和属性. 使用对象浏览器可让您很快的实现这一点(见图3.12).Figure 3.12 Object Browser 
动态帮助动态帮助窗口就像前面我们已提到过的,是隐藏的. 想要得到动态帮助,就可以如下操作:选择帮助|动态帮助. 然后你可以把窗口设置成浮动或自动隐藏. 需要注意的一点是,每个部分帮助 (索引,内容,搜索,索引结果,搜索结果 )都是独立的。如此如果您把他们解锁并且将他们所有设定为浮动,您将会看到一些窗口出现在屏幕。您可以做的是装载所有帮助窗口,这些窗口会自动将制表符命令显示在主要帮助窗口里面; 您能够从同样窗口访问所有帮助的部份 (参见图3.13) 。 定义动态帮助窗口, 选择工具| 选择。在选择对话箱、选择环境,然后选择动态帮助。您能指定按照一定的次序出现你想要的主题。您可以并且指定多少个链接被显示每题目。您可以并且设置帮助文件成为您自己的项目,由跟随XML 图解给出的vsdh.xsd. 根据那张图解名单和安置创造您的XML 文件并且显示在您要求被显示的地方。 选中许多不同的帮助选择和得到对应的信息,您现在需要做的非常简单。如果您有足够的硬盘空间, 装载所有 MSDN 帮助归档在与VS.NET 一起的硬盘。这样做,您只要简单地检查并且选择在将正在运行的程序。这将防止您经常必须装载其它盘在您想要查找一个特殊题目时候得到相当讨厌的是您需要一张盘打开树看法和别的问题条目。 Figure 3.13 隐藏的帮助窗口 任务列表管理器任务列表管理器(参见图3.14) 使您增加需要完成和的任务组织他们用一定数量不同的方式和以优先权。它的使用方法很简单。如果您使用来源安全, 一群开发者能迅速查看任务单中各个任务来决定需要做什么。 Figure 3.14 任务列表 任务列表管理器的其它特点是, 它将正在运行中的任务作为您调试的应用标记在所有错误下。您能回去和固定各项任务和把它被去除。您可以根据任务单进行修改错误。并且您能形成您自己的习惯, 这是唯一的方法来告诉注释需要从您的代码中增加什么在您的任务列表管理器中。
VS.NET的重要特性VS.NET将有新的和以前的特点的组合一起被建立入到IDE中 。除了IntelliSense之外, 新的结构 XML, 和许多不同方式一起出现在IDE中。我们从IntelliSense 开始吧。IntelliSenseIntelliSense的形成是微软的开发商研究了许多年的成果。编码完成技术协助当您开始键入标记、属性, 并且提醒您立即注意。 VS.NET 有IntelliSense 支持以下主要编程语言: VB.NET 、C #, 和C++ 。不过, VS.NET 不包括为XSLT 在Beta2 版本使用IntelliSense 我们也许必须等待微软发行新的版本。当前状态XSLT 插入为提供这种功能的VS.NET; 您能获得一个自由试验版本在http://aspn.activestate.com/ASPN/ Downloads/Visual XSLT 。 当开发的时候,您需要注意的是IntelliSense仅仅为活动的类提供了有效的信息,这样就意味着您需要使用Using system在您的设计中。Figure 3.15 使用 IntelliSense 
在C #中, IntelliSense 是只在代码页之后可被利用的 但是不是在 ASPX 页。这也许会在发行版本改变。使IntelliSense 失去作用, 选择工具| 选择| Text/Editor 和选择您使用的编辑, 在C # 中,在声明完成部分, uncheck 所有选择, 使IntelliSense 失去作用可以方便用户自己编辑。XML编辑器当使用XML编辑器时, vs.net 有一些有趣的特点。如果您创建一个合格的XML 文件, 您能依照2001 W3C XML 标准的XSD 标准自动的完成。 一旦这么做 您的XML 文件根据这新标准把代码完成。根据标准建立新的测试,我们打开poll.xml 并且为它引用一个标准,_ 选择文件| 打开。对您的光盘驱动器进行操作并且找出归档poll.xml 。点击打开。这应该会被装载到IDE 。
 
VC++基于JPG标准的图像压缩算法+代码+论文 如果XML 是一条连续的线, 简单地点击Format the WholeDocument 图标(参见图3.16) 。 www.lwfree.cnFigure 3.16 Formatting an XML Document 现在, 我们为这个文件创造一个标准。用鼠标右键单击任何地方在文本编辑程序并且选择Create Schema。您能看这些显著的变化显示在图3.17上: _ 一个叫做poll.xsd新文件 由VS.NET 自动创建了_ 在这个窗口, 新标准被设置作为文件的目标标准了。XML 命名空间属性也同时增加。_ IntelliSense 根据这个文件创建的标准现在可利用了。您能并且根据XML 文件选择一个另外标准。选择一个新标准从targetSchema 跳出。(参见图3.18).这个 然后会根据标准供IntelliSense选择。Figure 3.17 Generating a Schema for a Well-Formed XML Document 您能从数据方式查验XML 文件。这样看来, 您能对文件增加新结构和数据 (参见图3.19) 。Figure 3.18 Selecting a Target Schema 
Figure 3.19 Viewing an XML Document in Data Mode 
XML实际上是Web上表示结构化信息的一种标准文本格式,它没有复杂的语法和包罗万象的数据定义。XML同HTML一样,都来自SGML(标准通用标记语言)。SGML是一种在Web发明之前就早已存在的用标记来描述文档资料的通用语言。但SGML十分庞大且难于学习和使用。鉴于此,人们提出了HTML语言。但近年来,随着Web应用的不断深入,HTML在需求广泛的应用中已显得捉襟见肘,有人建议直接使用SGML作为Web语言。但SGML太庞大了,学用两难尚且不说,就是全面实现SGML的浏览器也非常困难。于是Web标准化组织W3C建议使用一种精简的SGML版本——XML。XML与SGML一样,是一个用来定义其他语言的元语言。与SGML相比,XML规范不到SGML规范的1/10,简单易懂,是一门既无标签集也无语法的新一代标记语言。XML的先进特性   XML继承了SGML的许多特性,首先是可扩展性。XML允许使用者创建和使用他们自己的标记而不是HTML的有限词汇表。这一点至关重要,企业可以用XML为电子商务和供应链集成等应用定义自己的标记语言,甚至特定行业一起来定义该领域的特殊标记语言,作为该领域信息共享与数据交换的基础。   其次是灵活性。HTML很难进一步发展,就是因为它是格式、超文本和图形用户界面语义的混合,要同时发展这些混合在一起的功能是很困难的。而XML提供了一种结构化的数据表示方式,使得用户界面分离于结构化数据。所以,Web用户所追求的许多先进功能在XML环境下更容易实现。   第三是自描述性。XML文档通常包含一个文?a href=/phrase/200603051002565.html target="_new">类型声明,因而XML文档是自描述的。不仅人能读懂XML文档,计算机也能处理。XML表示数据的方式真正做到了独立于应用系统,并且数据能够重用。XML文档被看作是文档的数据库化和数据的文档化。   除了上述先进特性以外,XML还具有简明性。它只有SGML约20%的复杂性,但却具有SGML功能的约80%。XML比完整的SGML简单得多,易学、易用并且易实现。另外,XML也吸收了人们多年来在Web上使用HTML的经验。XML支持世界上几乎所有的主要语言,并且不同语言的文本可以在同一文档中混合使用,应用XML的软件能处理这些语言的任何组合。所有这一切将使XML成为数据表示的一个开放标准,这种数据表示独立于机器平台、供应商以及编程语言。它将为网络计算注入新的活力,并为信息技术带来新的机遇。目前,许多大公司和开发人员已经开始使用XML,包括B2B在内的许多优秀应用已经证实了XML将会改变今后创建应用程序的方式。
 
VC++基于JPG标准的图像压缩算法+代码+论文IntroductionIn addition to the powerful .NET platform, Microsoft has introduced a new versionof its Visual Studio Suite, called Visual Studio.NET (VS.NET). Even in itsBeta stages,VS.NET provides the developer with powerful visual tools for developingall kinds of applications on the .NET platform.VS.NET helps in the speedy creation and deployment of applications codedin any of the managed languages, including C#.This chapter gets you familiarwith the new features of VS.NET and teaches you to customize it according toyour needs.We cover the many new features of VS.NET, including the .NETFramework,Web Services, XML support, and the Integrated DevelopmentEnvironment (IDE).Also, we cover the XML editor, which has tag completion for ExtensibleStylesheet Language Transformations (XSLTs).We go over the IntelliSense featureand how it is used in the different windows. Finally, we cover how to customizeyour settings within the IDE.VS.NET is a complete development environment.The components stay thesame regardless of language, making it very easy to switch projects and languagesand have the same features in the same place. Also, with the expanded IntelliSensewith tag completion, routine code writing is faster.Introducing Visual Studio.NETThe Start pages deliver a great many resources for the development environment.The Start page is the default home page for the browser inside of the IDE.Youcan tap all aspects of the IDE from these pages.We go over the three most usefulStart pages, starting out with the “What’s New” page and the “My Profile” page,and ending with the “Get Started” page.We show you what is new with VS.NET,set up your profile, and get started using the tool.Let’s open up VS.NET and take a look at the first of the Start pages (seeFigure 3.1).You can filter the “What’s New” Start page to whatever topic you are interestedin—we have chosen to filter by .NET Framework. All content in the“What’s New” Start page will be rendered based on the filter, so you can savesome time by not looking up new features for VB, for example.You can alsoselect Check availability of Visual Studio.NET service packs from thisStart page and check to see if you need the latest download for VS.NET. Let’slook at the “My Profile” page next, shown in Figure 3.2.Figure 3.1 VS.NET Start Page: What’s New Figure 3.2 VS.NET Start Page: My Profile The “My Profile” section of the Start page lets you create your own (custom)Profile or select from any of the options listed. If you happen to come from a VBbackground, using the VB profile would be beneficial so that you could befamiliar with the tools from VS 6. Likewise, a C++ or Interdev user from VS 6will benefit from the same environment.This will help you to learn the tool byshowing a familiar layout.You can also select to have only external help, whichwill open the Help documentation in a new window outside of the IDE.You canfilter the Help topics; in our case, we’ve selected .NET Framework SDK inthe What’s New section Start page.You can also select the window layout thatyou want to use.You then can select the Get Started Start page, shown inFigure 3.3.Here you can select projects you worked on previously, and you can also seewhere they are located on the machine by dragging the mouse over the name ofthe file.This is a nice feature that you can use where you have two projectsnamed the same but at different locations.The Start page is the default page for the Web browser window in VS.NET,so if you close it and want to get it back, simply hit the home icon on the Webtoolbar and the page will load in the design window.Components of VS.NETThe Visual Studio.NET IDE is made up of many components that interact withone another. You can use each of them separately or at the same time. This featurelets the user decide which set of components he wishes to use. All of the componentstogether create an intuitive graphical user interface (GUI).Design WindowThe design window is used when you are graphically creating an application usingthe Toolbox to drag and drop objects onto the window. Much like the codewww.lwfree.cnFigure 3.3 VS.NET Start Page: Get Started Here you can select projects you worked on previously, and you can also seewhere they are located on the machine by dragging the mouse over the name ofthe file. This is a nice feature that you can use where you have two projectsnamed the same but at different locations.The Start page is the default page for the Web browser window in VS.NET,so if you close it and want to get it back, simply hit the home icon on the Webtoolbar and the page will load in the design window.Components of VS.NETThe Visual Studio.NET IDE is made up of many components that interact withone another.You can use each of them separately or at the same time.This featurelets the user decide which set of components he wishes to use. All of the componentstogether create an intuitive graphical user interface (GUI).Design WindowThe design window is used when  you  are  graphically  creating an application usingthe Toolbox to drag and drop objects onto the window. Much like the codewindow and browser, the design window cannot be docked or set to Auto Hide.You can split the design view or have tab groups added to it. Splitting the windowhelps when you need to compare code from two separate files (see Figure 3.4).
 
基于JPG标准的图像压缩算法Here you can see windows for both design and code. This is a C# Web application,but the functionality is the same for any project.Figure 3.4 Split Window View 
Code WindowAs we mentioned, the code window is much like the design window. There is notoolbox functionality within the code view, however—you cannot drag and dropobjects from the toolbox into the code view. If you create objects in the codeview and then switch back to the design view, the objects that you added wouldpersist in design view. Again you cannot dock this window nor allow it to float.You can, however, split it and add new tab groups to the display. Figure 3.5 showsthe code window split and a tab vertical tab order added.If you look at Figure 3.5 a little more closely, you can see a collapsible menutree on the left-hand side. This is created every time you create a class or function,enabling you to collapse each section independently to save space for viewingother code present within the window. Note that you must have the defaultoption Outlining Mode checked for this to work. If you want to have line numbersshow for your code, you will have to choose Tools | Options. In theOptions dialog box, select Text/Editors. Select C# and then choose the optionto have line numbers added.Figure 3.5 Code View You may also define your own regions of code that may be collapsed.To dothis simply add the following code to your class or function you want to makeinto a region:#region///Comments and code#endregionServer ExplorerThe Server Explorer is by far one of the best features in VS.NET. From thiswindow you can connect to a server on the network and have full access to thatServer or servers. You can also link to any database servers on the network. Let’sSee how to do that. Click the Connect to Database icon in the title bar of theWindow (see Figure 3.6).You will be prompted to give all information requiredfor a Universal Data Link (UDL).Fill out the UDL Wizard and test the connection. After this is done, you canaccess everything within that database that the user has rights to. Let’s take a lookat that in Figure 3.7.Figure 3.6 Add Database to Server Explorer Figure 3.7 Expanded Database View You can now click on any object within the Server Explorer and edit itwithin VS.NET.This is a timesaver from having to have both the Query Analyzerand VS.NET open at the same time and going back and forth between the twojust to switch a data type of one stored procedure input parameter.ToolboxThe Toolbox, shown in Figure 3.8, includes Data, Components, Web Forms, andWindow Forms tabs. As stated earlier in the chapter, you can use the Toolboxwith the Design View window. You can drag and drop each component or controlonto the design window. Also, you may customize the Toolbox by adding inyour own code fragments and renaming them to something meaningful.To do this, simply right-click on the Toolbox and select Add Tab. Give it aname that is different than the existing tabs, and you are ready to add your owntools. To add a new tool, highlight a block of code that you want to make into atool and drag it onto the Toolbox label you just created.The Clipboard Ring stores all the items that you have copied in code viewautomatically. You can then double-click these and add them to the source code.Figure 3.8 The Toolbox Window
 
基于JPG标准的图像压缩算法Docking WindowsOne of the new features for VS.NET is that you can dock or expand or collapseall the windows within the IDE .To add windows to your  IDE, navigate to thestandard toolbar and select View; here you can select all the windows that youwant to have immediately available in your environment. One drawback to this isthat you will not have much room left to work in if you select a lot of windowsto show, but the Auto Hide feature of each window makes them slide off thescreen and embed in the side when not needed. This enables you to have maximumcode view but still have all windows present .To see a window that hasAuto Hide enabled, simply position your mouse over the window icon on eitherside of the IDE. You can dock each window into place by clicking on the pin orby navigating to the standard toolbar and choosing the Window menu option.Once a window is docked, it is there permanently; you can, however, make thewindow float by selecting Window | Floating (see Figure 3.9).Figure 3.9 Floating Window Properties ExplorerThe Properties Explorer is much as it was in VS 6 and the Visual Basic IDE andVisual Interdev IDE. Select an object from the design window, and in theProperties Explorer, you will see available attributes for that object listed, asshown in Figure 3.10.The right-hand column lists the property names, and theleft-hand column stores the attribute’s value. The Properties window enablesRapid Application Development (RAD) by allowing you to quickly create agraphical representation of the application you are building without doing anycoding whatsoever. Some options are available in the Properties Explorer. You canselect from the drop-down list the actual object you want to view. You can alsoselect the Events option and have the event available to that object displayed. Youcan organize the Properties Explorer either by categories or alphabetically.Any changes made in this window will be propagated to the design view andcode view windows, respectively.Figure 3.10 Properties Explorer 
Object BrowserThe Object browser will give you a complete list of all classes’ methods andproperties in your solution. Everything is listed, and it is quite in depth. If youwant to, you can look up parents of classes that you are using and list out themethods and properties you might need. By double-clicking on an external classin your solution, the Object browser will load and have all parent and child nodesof the class listed with each of their methods and properties included. This comesin handy when you are in need of finding a suitable substitute class to handlesome part of your application. Like in Java, .NET has an incredible quantity ofbuilt-in classes that can accomplish just about everything you may need—thetrouble is finding their location and how to access their methods and properties.Using the Object Browser enables you to achieve this in a timely fashion (seeFigure 3.12).Figure 3.12 Object Browser Dynamic HelpDynamic Help is a dockable  window just like the previous windows we have discussed.To get Dynamic Help to appear, simply choose Help | Dynamic Help.You can then make the window float or Auto Hide. One thing to note is thateach part of Help (Index, Contents, Search, Index Results, and Search Results),are all separate windows, so if you undock them and make them all float you willhave quite a few windows appearing on the screen. One thing you may do isload all the Help windows into themselves and a bottom tab order will appearinside the main Help window; you can then access all parts of Help from thesame window (see Figure 3.13).To customize the Dynamic Help window, choose Tools | Options. Inthe Options dialog box, select Environment and then select Dynamic Help.Here you can specify what topics you want to have available and in what order.You may also specify how many links are displayed per topic. You may also createa custom Help file on your own for your project, by following the XML schemanamed vsdh.xsd. Create your XML file based off of that schema list and place thefile where you want your Help topics to be displayed.Tabbing through the many different Help options and getting to the informationyou need is now easy. If you have the hard drive space, loading all theMSDN Help files from the disks that come with VS.NET would be beneficial. Todo this, simply check the option on the installation sequence that will run fromthe computer and not the CD. This will prevent you from constantly having toload another disk every time you want to look up a particular topic. This getsquite annoying when you need one disk to open the tree view and another toaccess the topic within.
 
VC++基于JPG标准的图像压缩算法+代码+论文Figure 3.13 Docked Help Windows Task List ExplorerThe Task List (see Figure 3.14) enables you to add tasks that need to be done andorganize them in a number of different ways and with priority. It is very simpleto use. If you are using Source Safe, a group of developers can quickly see whatneeds to be done and what has been done by viewing the Task List for each filein the project.Figure 3.14 Task List Another feature of the Task List is that it will create tasks on the fly as youdebug your application by marking down any errors. You can then go back andfix each task and have it removed. You can organize the task list on Build errors.Also you can create your own custom token, which is a unique key that tells theTask List that a comment needs to be added to the list, to appear in your TaskList from your code. Features of VS.NETVS.NET has a combination of new and old features built into the IDE. We discussthe additions to IntelliSense, the new features of XML support, and the many differentways you can now customize the IDE. Let’s begin with IntelliSense.IntelliSenseIntelliSense is a form of code completion that has been part of most Microsoftdeveloper tools for many years now. Code completion technology assists when youstart to type a tag, attribute, or property by providing the resulting ending so thatyou will not have to write out the whole item. You will notice this right away.VS.NET has IntelliSense support for all of the primary programming languages:VB.NET, C#, and C++. IntelliSense even exists for Cascading StyleSheets and HTML. Unfortunately,VS.NET doesn’t include IntelliSense for XSLTin the Beta2 version—we may have to wait for the release version. CurrentlyActive State does make an XSLT plug-in for VS.NET that provides this functionality;you can obtain a free trial version at http://aspn.activestate.com/ASPN/Downloads/Visual XSLT.While developing, you will notice that IntelliSense provides informationabout active classes only, meaning those that you have created in your project orthose referenced in your page with the using Directive (for code-behind pages:page name.aspx.cs). If you are trying to use an object or method, and noIntelliSense appears for it, you may have forgotten to include the reference.For example, if you attempt to do data operations using the SqlCommandobject, no IntelliSense will appear until you reference the appropriate data class(see Figure 3.15):using System.Data.SqlClient;Figure 3.15 Using IntelliSense For C#, IntelliSense is available only in the code-behind page and not in theASPX page itself. This may change in the release version. To disable IntelliSense,choose Tools | Options | Text/Editor and select the editor you are using,which should be C#. In the Statement Completion section, uncheck all theoptions, which will disable IntelliSense for the editor.XML EditorWhen working with XML,VS.NET has some interesting features. If you create awell-formed XML document of your own, you can easily generate a correspondingXSD schema that conforms to the 2001 W3C XML schema. Once thisis done, your XML document will have code completion based on this newschema.To test creating a schema, let’s open poll.xml and generate a schema for it:_ Choose File | Open. Navigate to your CD-ROM drive and locate thefile poll.xml._ Click Open.This should load the page into the IDE._ If the XML is one continuous line, simply click the Format the WholeDocument icon (see Figure 3.16).Figure 3.16 Formatting an XML Document Now, let’s create a schema for this file. Right-click anywhere in the text editorand select Create Schema.You can see these resulting changes in Figure 3.17:_ A new file called poll.xsd was auto-generated by VS.NET._ In the Properties window, the new schema is set as the file’s targetschema._ An XML namespace attribute is added._ IntelliSense based on the schema is now available for this document.You can also select a different schema to base the XML file on by selecting anew schema from the targetSchema drop-down (see Figure 3.18).This would thenprovide IntelliSense based on the schema selected.You can also view XML documents from the Data mode.This presents the
 
VC++基于JPG标准的图像压缩算法+代码+论文document in a hierarchical structure. From this view, you can also add new nodesand data to the document (see Figure 3.19).Figure 3.17 Generating a Schema for a Well-Formed XML Document 
You can also select a different schema to base the XML file on by selecting anew schema from the targetSchema drop-down (see Figure 3.18).This would thenprovide IntelliSense based on the schema selected.You can also view XML documents from the Data mode.This presents thedocument in a hierarchical structure. From this view, you can also add new nodesand data to the document (see Figure 3.19).Figure 3.18 Selecting a Target Schema  Figure 3.19 Viewing an XML Document in Data Mode 
XML Web is actually said structural information of a standard text format, It is not complicated syntax and all-encompassing definition of the data. XML with HTML, SGML came from (standard general markup language). SGML is a Web long before the invention of the markers used to describe data files common language. But SGML is a huge and difficult to learn and use. Given this, people of the HTML language. But in recent years, with the application of the Web-depth, HTML in demand for a wide range of applications has been more pronounced. It was suggested that the direct use of SGML as a Web language. But SGML too large and still study with a dilemma aside, is the full realization of SGML browser is also extremely difficult. So W3C Web standardization organizations recommend the use of a streamlined version of SGML -- XML. XML and SGML, is a language used to define the yuan in other languages. Compared with SGML and XML specification less than a tenth of SGML standard, easy-to-read, neither is a label collection has no syntax of the new generation markup language.XML advanced features XML SGML inherited many characteristics, the first is scalability. XML allows users to create and use their own marking is not limited vocabulary of HTML tables. This is essential, Enterprises can use XML for e-commerce and supply chain integration applications define its own markup language, specific industries or even a definition of the field up to the special markup language, As the field of information sharing and data exchange. Secondly is flexibility. HTML to further development, because it is the format, HTML and graphic user interface semantics mixed to the simultaneous development of these mixed together function is very difficult. And XML provides a structured way of data, enables the user interface separated from the structure of data. Therefore, Web users pursue many of the advanced functions in XML environment more easily attained. The third is the descriptive. XML documents often contain a document type declaration, which is the XML document described. Not only can read XML documents, computers can handle. XML data indicated the truly independent of the application system and the data can reuse. XML is seen as a database file and the files of data. In addition to these advanced features, XML is also concise. SGML it is only about 20% of the complex, but have the function of SGML about 80%. XML than the integrity of SGML is much simpler and easy to learn, easy-to-use and easy to achieve. In addition, XML has absorbed over the years people on the Web using HTML experience. XML support in almost all the world's major languages, and the text in different languages at the same mixed-use documentation, Application of XML software can handle such language in any combination. All of this will become the XML data in an open standards, such data independent of machine platform suppliers and programming languages. Network Computing It will inject new vitality, and information technology has brought new opportunities. Currently, many large companies and developers have started to use XML, B2B, including the many outstanding applications have confirmed that the XML will change the future creation of the application.From 1998 onwards, the introduction of XML many network protocols, for the two in order to provide mutual communication software the standard method. Simple Object Access Protocol (SOAP) and XML-RPC standard of interactive software for the platform independent manner , a distributed computing environment opens the door. Almost all major software manufacturers will support SOAP. SOAP unprecedented rapid success of the software to improve the interoperability potential. Today, the Web revolution is on the rise, and SOAP is based on the agreement Service .
  • 上一篇资讯: 学位论文原创性声明
  • 下一篇资讯: 旅游管理系统
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师