资源简介
此代码实现了DCT压缩图片的整个过程,包含交互的界面,可根据输入的压缩率等进行图片压缩

代码片段和文件信息
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
namespace ImageCompress
{
class DCT
{
#region Public interface
// 事件处理
public delegate void OnImageProcessedHandler(Bitmap ProcessedImage);
public static event OnImageProcessedHandler OnImageProcessed;
// 类的唯一公共接口
public static void compressImage(Bitmap img int coefficient int DistortionRate int compressionRate)
{
// 初始化入口
double[] alpha = create_alpha(coefficient);
// 得到像素的RGB值
double[] R; double[] G; double[] B;
convertToArray(img out R out G out B coefficient);
// DCT
R = dct(R coefficient alpha);
G = dct(G coefficient alpha);
B = dct(B coefficient alpha);
// 压缩
compress(ref R coefficient DistortionRate compressionRate);
compress(ref G coefficient DistortionRate compressionRate);
compress(ref B coefficient DistortionRate compressionRate);
// IDCT
R = idct(R coefficient alpha);
G = idct(G coefficient alpha);
B = idct(B coefficient alpha);
if (OnImageProcessed != null) OnImageProcessed(convertToImage(R G B img.Size));
}
#endregion
#region DCT & IDCT
//离散余弦变换
private static double[] dct(double[] imgArray int coefficient double[] alpha)
{
int width = imgArray.GetLength(0);
int height = imgArray.GetLength(1);
// 构建矩阵
double[] C = new double[width height];
// 遍历块
for (int x = 0; x < width; x += coefficient)
{
for (int y = 0; y < height; y += coefficient)
{
// 遍历块内的像素点
double[] f = clipArray(imgArray coefficient x y);
for (int u = x; u < coefficient + x; ++u)
{
for (int v = y; v < coefficient + y; ++v)
{
// 计算DCT总和
double sum = 0;
for (int ii = 0; ii < coefficient; ++ii)
{
for (int jj = 0; jj < coefficient; ++jj)
{
sum += f[ii jj] * Math.Cos((2 * ii + 1) * (u - x) * Math.PI / (2 * coefficient)) *
Math.Cos((2 * jj + 1) * (v - y) * Math.PI / (2 * coefficient));
}
}
C[u v] = alpha[u - x] * alpha[v - y] * sum;
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-12-25 21:48 222017321062028 李姗姗 交互实验7-9\
目录 0 2018-12-24 20:49 222017321062028 李姗姗 交互实验7-9\ImageCompress\
文件 478208 2018-12-25 21:21 222017321062028 李姗姗 交互实验7-9\ImageCompress.exe
目录 0 2018-12-24 20:49 222017321062028 李姗姗 交互实验7-9\ImageCompress\.vs\
目录 0 2018-12-24 20:49 222017321062028 李姗姗 交互实验7-9\ImageCompress\.vs\ImageCompress\
目录 0 2018-12-24 20:49 222017321062028 李姗姗 交互实验7-9\ImageCompress\.vs\ImageCompress\v15\
文件 62976 2018-12-25 21:42 222017321062028 李姗姗 交互实验7-9\ImageCompress\.vs\ImageCompress\v15\.suo
目录 0 2018-12-24 20:49 222017321062028 李姗姗 交互实验7-9\ImageCompress\.vs\ImageCompress\v15\Server\
目录 0 2018-12-24 20:49 222017321062028 李姗姗 交互实验7-9\ImageCompress\.vs\ImageCompress\v15\Server\sqlite3\
文件 0 2018-12-24 20:49 222017321062028 李姗姗 交互实验7-9\ImageCompress\.vs\ImageCompress\v15\Server\sqlite3\db.lock
文件 606208 2018-12-25 10:21 222017321062028 李姗姗 交互实验7-9\ImageCompress\.vs\ImageCompress\v15\Server\sqlite3\storage.ide
文件 32768 2018-12-25 21:38 222017321062028 李姗姗 交互实验7-9\ImageCompress\.vs\ImageCompress\v15\Server\sqlite3\storage.ide-shm
文件 4140632 2018-12-25 21:38 222017321062028 李姗姗 交互实验7-9\ImageCompress\.vs\ImageCompress\v15\Server\sqlite3\storage.ide-wal
目录 0 2018-12-25 21:37 222017321062028 李姗姗 交互实验7-9\ImageCompress\ImageCompress\
文件 2055 2018-12-25 21:42 222017321062028 李姗姗 交互实验7-9\ImageCompress\ImageCompress.sln
文件 189 2018-12-24 20:49 222017321062028 李姗姗 交互实验7-9\ImageCompress\ImageCompress\App.config
目录 0 2018-12-24 20:49 222017321062028 李姗姗 交互实验7-9\ImageCompress\ImageCompress\bin\
目录 0 2018-12-24 22:53 222017321062028 李姗姗 交互实验7-9\ImageCompress\ImageCompress\bin\Debug\
文件 478208 2018-12-25 21:21 222017321062028 李姗姗 交互实验7-9\ImageCompress\ImageCompress\bin\Debug\ImageCompress.exe
文件 189 2018-12-24 20:49 222017321062028 李姗姗 交互实验7-9\ImageCompress\ImageCompress\bin\Debug\ImageCompress.exe.config
文件 44544 2018-12-25 21:21 222017321062028 李姗姗 交互实验7-9\ImageCompress\ImageCompress\bin\Debug\ImageCompress.pdb
文件 10610 2018-12-25 21:36 222017321062028 李姗姗 交互实验7-9\ImageCompress\ImageCompress\DCT.cs
文件 5596 2018-12-25 21:37 222017321062028 李姗姗 交互实验7-9\ImageCompress\ImageCompress\Form1.cs
文件 17431 2018-12-25 10:21 222017321062028 李姗姗 交互实验7-9\ImageCompress\ImageCompress\Form1.Designer.cs
文件 667658 2018-12-25 10:21 222017321062028 李姗姗 交互实验7-9\ImageCompress\ImageCompress\Form1.resx
文件 3648 2018-12-24 22:53 222017321062028 李姗姗 交互实验7-9\ImageCompress\ImageCompress\ImageCompress.csproj
目录 0 2018-12-24 20:49 222017321062028 李姗姗 交互实验7-9\ImageCompress\ImageCompress\obj\
目录 0 2018-12-25 10:21 222017321062028 李姗姗 交互实验7-9\ImageCompress\ImageCompress\obj\Debug\
文件 1443 2018-12-25 00:00 222017321062028 李姗姗 交互实验7-9\ImageCompress\ImageCompress\obj\Debug\DesignTimeResolveAssemblyReferences.cache
文件 7220 2018-12-24 22:28 222017321062028 李姗姗 交互实验7-9\ImageCompress\ImageCompress\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
文件 42 2018-12-24 22:28 222017321062028 李姗姗 交互实验7-9\ImageCompress\ImageCompress\obj\Debug\ImageCompress.csproj.CoreCompileInputs.cache
............此处省略20个文件信息
- 上一篇:STM32+TIM+ADC
- 下一篇:金士顿G3U盘量产工具
相关资源
- WPF USB 网络 串口 通信软件
- B/S 网上订餐系统
- 教室管理系统.rar
- 小鸡快跑游戏.
-
分别适用于.NET fr
amework 2.0和4.0的E - 汽车租赁系统............................
- 德卡D8读写器关于读写感应卡的一些代
- halcon 测量助手
- 图片存储到数据库保存二进制文件并
- 用Socket写的简易FTP服务器和客户端
- 企业销售管理信息系统(全套)
- 串口操作类(justinio)
- 基于Petri网的工作流(完整的原创源代
- 选择题自动考试系统
- 多线程实例:桌面智能弹球小游戏
- 土地信息管理系统
- ServiceStack V3.9 全部dll
- PDF pdfview.ocx 无水印
- 无需共享打印机实现远程打印功能小
- 真正的破解版PDFView4NET
- 网页调用ActiveX控件获取串口数据
- Luence的与盘古分词的使用软件
- Emgu.CV 打开视频与人脸检测
- 麦克纳姆轮程序.rar
- Unity3D 实战视频教程 保卫萝卜 2D 游戏
- net微信支付
- lucene.net+盘古分词多条件全文检索并匹
- 闪电猫-电商下图助手5.0.zip
- FastReport.Net V2014.4.8 For .Net2.0
- NET Reflector 8.3破解版自带代码导出
评论
共有 条评论