Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 游戏天堂 > 游戏开发 > [FileFormat]用VB写的高速GIF、JPEG 编码/解码 程序
【标  题】:[FileFormat]用VB写的高速GIF、JPEG 编码/解码 程序
【关键字】:FileFormat,VB,GIF,JPEG
【来  源】:http://blog.csdn.net/zyl910/archive/2006/05/29/762401.aspx

[FileFormat]用VB写的高速GIF、JPEG 编码/解码 程序

Your Ad Here

1.

zSaveGIF
下载(注意修改下载后的扩展名)
快速的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
下载(注意修改下载后的扩展名)
项目: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
下载(注意修改下载后的扩展名)
项目: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年了

 

用VB6写的一个简单俄罗斯方块代码:【上一篇】
当年我QB的封笔之作——在VGA 12h 模式下实时抖动绘制真彩色数据:【下一篇】
【相关文章】
  • 用VB6写的一个简单俄罗斯方块代码
  • [B/S]使用vb插入记录到lotus notes数据库中
  • ASP VBScript 分页函数 by Stabx, 第三版
  • VBScript 中 Select Case 的三个典型应用 By Stabx
  • VB开发ASP组件经典事例[一]
  • VB开发ASP组件经典事例[二]
  • VB开发ASP组件经典事例[三]
  • 在.NET中如何实现像VB.NET中MSBBOX的功能!?
  • 用FW MX轻松制作Gif动画
  • Office 2007的VBA,以及Office开发的随想
  • 【随机文章】
  • 毛新宇的第一任妻子竟然2003年死于秦城监狱!
  • tomcat配置方法
  • 7133 Enable fast write
  • 对字符串数组进行排序,在冒泡法排序中使用compareTo()方法确定排序的顺序。
  • C++主题——Template Method(模板方法)模式
  • 使用JavaWebStart
  • AIX System Security:8.Warning banner
  • C中的跳转语句[非goto]
  • 这几天做access + .net2.0项目的一些心得
  • Windows 2000 阅读和投递新闻组
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.