1.
zSaveGIF |
下载:http://files.cnblogs.com/zyl910/zSaveGIF.zip |
快速的GIF编码/解码程序。其中的GIF_LZW编码/解码算法是我最自豪的。 |
2.
NetPicTran |
下载(注意修改下载后的扩展名) |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (利用GIF_LZW算法实现的)网络图片传输 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 作者:zyl910 版本:1.0 更新:2004-06-06 技术特点 ~~~~~~~~ 一、使用TCP协议传输数据。理由:稳定性好。 二、使用字节数据流进行传输,理由: A:VB的String存在自动Unicode转换问题,影响速度; B:可以直接发送8位字节数据,不需要使用Base64编码,从而减少了编码时间。 三、使用GIF-LZW压缩算法压缩图像。理由: A:行程编码、Huffman压缩算法压缩率太低; B:JPEG压缩算法需要太多位运算,且运算量大(有专门MMX优化算法),不利于VB实现; C:GIF-LZW压缩算法压缩率较好,且我已想出VB语法下高效GIF-LZW压缩/解压算法。 四、使用“有序抖动”算法进行 色彩量化。理由:“有序抖动”处理的结果具有一定规律性,有助于LZW类算法压缩。 |
3.
SaveJPEG |
下载:http://files.cnblogs.com/zyl910/SaveJPEG.rar |
项目:JPEG图片压缩程序(1/5) 作者:zyl910 E-Mail:zyl910@sina.com 说明: 由于JPEG图片压缩的复杂性。就算是是最简单的基线系统(BaseLine), 若想一次实现对算法要求太高,且不易理解,再加上我对它不是特别熟悉。 于是我决定分5个步骤实现: 1.灰度 量化表:标准亮度量化表,共1张 Huffman表:标准DC/AC亮度Huffman表,共2张 2.彩色YUV111 量化表:标准亮度/色度量化表,共2张 Huffman表:标准DC/AC亮度Huffman表,共2张(亮度/色度用同一张Huffman表) 3.彩色YUV411 量化表:标准亮度/色度量化表,共2张 Huffman表:标准DC/AC亮度Huffman表,共2张(亮度/色度用同一张Huffman表) 4.使用DRI、RSTx标签 量化表:标准亮度/色度量化表,共2张 Huffman表:标准DC/AC亮度Huffman表,共2张(亮度/色度用同一张Huffman表) 5.自适应Huffman表 量化表:标准亮度/色度量化表,共2张 Huffman表:标准 亮度/色度 & DC/AC Huffman表,共4张 提示: JPEG压缩分为三个部分: 1.JPEG压缩原理及算法(RGB/YCbCr,DCT/IDCT,量化,Z字型编码,用DPCM对DC/用RLE对AC编码/Huffman编码) 2.JPEG标记格式 3.JPEG图片文件的组织形式(位于SOS后的图像压缩数据是由MCU块怎样排列的,特别是使用了DRI之后) 还有许多细节问题: 1.解码过程中遇到“FF 00”当“FF”处理,否则忽略“FF” 2.进行DCT前YCbCr要减128,进行IDCT前要加128(相当于Y减128,YCbCr不需要加128) 3.每个标记中数据可以不止一个(去掉长度的部分就是一段) 参考文献: 1.何斌《VC++数字图像处理》人民邮电出版社, 2001.4 2.张益贞《VC++实现JPEG/MPEG编解码技术》人民邮电出版社, 2002.11 3.杨淑莹《VC++图像处理程序设计》清华大学出版社/北方交通大学出版社, 2003.11(SOF0中,宽度/高度 写反了) |
4.
SaveJPEG2 |
下载:http://files.cnblogs.com/zyl910/SaveJPEG2.rar |
项目:JPEG图片压缩程序 v2.0 作者:zyl910 更新:2004/5/23 E-Mail:zyl910@sina.com 说明 ~~~~ 这是一个比较完整的JPEG压缩程序,支持 彩色/灰度、Y分量水平/垂直采 样律、图像质量 调整。使用的是最简单的基线系统(BaseLine)压缩方式, 量化表及Huffman表都是与ACDSee一致的,没有提供自适应Huffman表压缩功能。 速度测试 ~~~~~~~~ CPU:赛杨733 内存:128MB SDRAM 操作系统:Windows 98 SE (请运行编译后的exe!在VB开发环境下是解析运行,大规模数据处理速度很慢) (单位:毫秒ms) ┏━━━━┳━━━━━━┯━━━━━┯━━━━━┓ ┃ ┃512*512 Lena│ 800*600 │ 1024*768 ┃ ┣━━━━╋━━━━━━┿━━━━━┿━━━━━┫ ┃ 灰度 ┃ 376.9725 │ 597.6534 │ 950.3084 ┃ ┠────╂──────┼─────┼─────┨ ┃彩色 1:1┃ 676.0799 │1097.7514 │1655.6605 ┃ ┠────╂──────┼─────┼─────┨ ┃彩色 2:1┃ 587.0741 │ 921.2441 │1384.4843 ┃ ┠────╂──────┼─────┼─────┨ ┃彩色 1:2┃ 574.2990 │ 905.8943 │1394.3513 ┃ ┠────╂──────┼─────┼─────┨ ┃彩色 2:2┃ 509.0129 │ 806.8808 │1251.1223 ┃ ┗━━━━┻━━━━━━┷━━━━━┷━━━━━┛ 注: “彩色 x:y”表示Y分量的水平/垂直采样滤。 1:1:YUV 111 2:1:YUV 422(水平) 1:2:YUV 422(垂直) 2:2:YUV 411 提示 ~~~~ JPEG压缩分为三个部分: 1.JPEG压缩原理及算法(RGB/YCbCr,DCT/IDCT,量化,Z字型编码,用DPCM对DC/用RLE对AC编码/Huffman编码) 2.JPEG标记格式 3.JPEG图片文件的组织形式(位于SOS后的图像压缩数据是由MCU块怎样排列的,特别是使用了DRI之后) 细节问题 ~~~~~~~~ 1.解码过程中遇到“FF 00”当“FF”处理,否则忽略“FF” 2.进行DCT前YCbCr要减128,进行IDCT前要加128(相当于Y减128,CbCr不需要加128) 3.每个标记中数据可以不止一个(去掉长度的部分就是一段) 参考文献 ~~~~~~~~ 1.何斌《VC++数字图像处理》人民邮电出版社, 2001.4 2.张益贞《VC++实现JPEG/MPEG编解码技术》人民邮电出版社, 2002.11 3.杨淑莹《VC++图像处理程序设计》清华大学出版社/北方交通大学出版社, 2003.11(SOF0中,宽度/高度 写反了) 4.网络上的一些文章,比如 云风的“JPEG 简易文档 V2.12”…… VB不适合编写高速JPEG压缩程序的原因 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.JPEG压缩需要大量的位运算,而VB中只能靠乘除来移位,效率太低了 2.在高级语言中确定一个整数占用的位数需要一大堆if,可在汇编中一条位扫描指令就行了 3.浮点DCT变换太慢,而 AAN快速DCT变换算法MMX优化版 早就公布n年了 |