http://www.fantasiasoft.net/SpyScreen.zip
本代码演示了如何在网络上不保存文件到硬盘而传送图像。
代码思路是,通过TCP协议握手,将图像保存到一个数组并按照R、G、B三个通道分层,用zlib库压缩到ZipStream数组,对此数组进行Base64编码方便网络传输,然后通过TCP协议实现了网络图像传送,传送到对方之后进行Base64解码和zlib的解压,实现了图像的复原。
主要技术点:
1.自定义协议握手
2.将图像保存到数组(cDIB.MapArray/UnMapArray)
3.利用Zip编码进行图像压缩(cDIB.SaveStream/LoadStream)
4.利用Base64编码实现网络传送(FrmMain.InitBase64/CompBase64/UnCompBase64)http://www.fantasiasoft.net/Mp3Renames.exe
本代码演示了通过Mp3_Id修改Mp3文件名的方法。
主要技术点:
Mp3_Id的获得。
本代码演示了如何在网络上不保存文件到硬盘而传送图像。
代码思路是,通过TCP协议握手,将图像保存到一个数组并按照R、G、B三个通道分层,用zlib库压缩到ZipStream数组,对此数组进行Base64编码方便网络传输,然后通过TCP协议实现了网络图像传送,传送到对方之后进行Base64解码和zlib的解压,实现了图像的复原。
主要技术点:
1.自定义协议握手
2.将图像保存到数组(cDIB.MapArray/UnMapArray)
3.利用Zip编码进行图像压缩(cDIB.SaveStream/LoadStream)
4.利用Base64编码实现网络传送(FrmMain.InitBase64/CompBase64/UnCompBase64)http://www.fantasiasoft.net/Mp3Renames.exe
本代码演示了通过Mp3_Id修改Mp3文件名的方法。
主要技术点:
Mp3_Id的获得。
解决方案 »
- VB中分号有几种作用?
- 如何制作自定义控件VB6?
- VB中怎么将数组值赋值给对应的字段?
- 怎样用代码关联二个数据库中的表?
- MdoComponentProject类是做什么的?怎么用?需要引用什么类库?
- 求教:vb里pixel与twip这两个scaleMode的换算比例是多少?
- 散分!帮忙提供Wise Installation System 9.02原版的安装序列号!来信[email protected]
- 2000中如何实现 使指定进程的运行窗体不在任务栏上显示?
- 求大神帮帮忙
- ========如何在打印机上打印一个与水平线呈45度角的字符?
- 连接sql数据库,为何每次都要先登录网上邻居呢
- microsoft barcode control 9.0控件的使用
http://www.fantasiasoft.net/Zyl910/SaveJPEG.rar
项目:JPEG图片压缩程序(0/5)
作者:zyl910
E-Mail:[email protected]
说明:
由于JPEG图片压缩的复杂性。就算是是最简单的基线系统(BaseLine),
若想一次实现对算法要求太高,且不易理解,再加上我对它不是特别熟悉。
于是我决定分5个步骤实现:1.灰度
量化表:标准亮度量化表,共1张
Huffman表:标准DC/AC亮度Huffman表,共2张
-
为了简化边界处理,忽略非8边界
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
刚刚把一个JPEG文件分析工具写好稍有点成果:
Q:JPEG的质量是怎么控制的?(如ACDSee的百分比调整)
A:是通过设置量化表。
算法:在 0%量化表 和 全精度量化表(100%,全为1) 中做线性插值
ACDSee的亮度量化表:
20, 13, 12, 20, 30, 50, 63, 76,
15, 15, 17, 23, 32, 72, 75, 68,
17, 16, 20, 30, 50, 71, 86, 70,
17, 21, 27, 36, 63,108,100, 77,
22, 27, 46, 70, 85,136,128, 96,
30, 43, 68, 80,101,130,141,115,
61, 80, 97,108,128,151,150,126,
90,115,118,122,140,125,128,123,
ACDSee的色度量化表:
31, 33, 45, 88,185,185,185,185,
33, 39, 48,123,185,185,185,185,
45, 48,105,185,185,185,185,185,
88,123,185,185,185,185,185,185,
185,185,185,185,185,185,185,185,
185,185,185,185,185,185,185,185,
185,185,185,185,185,185,185,185,
185,185,185,185,185,185,185,185,现在还有最后一个疑问:
---------------------------------------------
前一个DC是指哪一个DC?
如下两个MCU块:
=================
0:Y
1:Y
2:Y
3:Y
4:Cb
5:Cr
-----
6:Y
7:Y
8:Y
9:Y
10:Cb
11:Cr
================
编号为6的Y分量子块的前一个子块是哪一个?
A.5号
B.3号
C.0号
俄 :Поздравляю Вас с Новмы годом!
日: 明けまして おめでとうございます。
中 :祝你新年快乐!
英 :Happy new year to you!
法 :Bonne Année!
用6种语言祝福你,新年好