資源簡介
此代碼實現了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?????????????{
????????????????for?(int?y?=?0;?y?????????????????{
????????????????????//?遍歷塊內的像素點
????????????????????double[]?f?=?clipArray(imgArray?coefficient?x?y);
????????????????????for?(int?u?=?x;?u?????????????????????{
????????????????????????for?(int?v?=?y;?v?????????????????????????{
????????????????????????????//?計算DCT總和
????????????????????????????double?sum?=?0;
????????????????????????????for?(int?ii?=?0;?ii?????????????????????????????{
????????????????????????????????for?(int?jj?=?0;?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盤量產工具
評論
共有 條評論