導航:首頁 > 文件處理 > c實現圖像壓縮

c實現圖像壓縮

發布時間:2024-06-25 04:25:50

① C語言都有哪些經典的無損壓縮演算法

C語言經典的無損壓縮演算法有:哈夫曼演算法、LZ。

哈夫曼演算法:
哈夫曼編碼是David A. Huffman於1952年發明的一種滿足對編碼演算法要求的一種編碼演算法。
哈夫曼演算法是利用頻率信息構造一棵二叉樹,頻率高的離根節點近(編碼長度短),頻率低的離根節點遠(編碼長度長),手動構造方法是先將字母按照頻率從小到大排序,然後不斷選擇當前還沒有父節點的節點中權值最小的兩個,構造新的父節點,父節點的值為這兩個節點值的和,直到構造成一棵二叉樹。

LZ演算法:
LZ演算法及其衍生變形演算法是壓縮演算法的一個系列。LZ77和LZ78演算法分別在1977年和1978年被創造出來。雖然他們名字差不多,但是演算法方法完全不同。這一系列演算法主要適用於字母數量有限的信息,比如文字、源碼等。流行的GIF和PNG格式的圖像,使用顏色數量有限的顏色空間,其壓縮就採用了兩種演算法的靈活變形應用。

② 求用C語言寫的圖像壓縮(JPEG)編碼中zigzag編程部分

你說的是這段?
還是包括後面的huffman編碼部分

static UChar zigzag[64]={ 0, 1, 5, 6,14,15,27,28,
2, 4, 7,13,16,26,29,42,
3, 8,12,17,25,30,41,43,
9,11,18,24,31,40,44,53,
10,19,23,32,39,45,52,54,
20,22,33,38,46,51,55,60,
21,34,37,47,50,56,59,61,
35,36,48,49,57,58,62,63 };

//zigzag reorder
for (i=0;i<=63;i++) DU[zigzag[i]]=DU_DCT[i];

③ 6涓鍏嶈垂宸ュ叿鍦ㄧ嚎鍘嬬緝鍥劇墖

6涓鍏嶈垂宸ュ叿鍦ㄧ嚎鍘嬬緝鍥劇墖

杞繪澗鍘嬬緝鍥劇墖鏂囦歡澶у皬

Pic diet

Pic diet鏄涓嬈懼湪綰挎壒閲忓帇緙╁浘鐗囩炲櫒銆

瀹gО浠呴氳繃浣犵殑嫻忚堝櫒鏉ュ帇緙╁浘鐗囧ぇ灝忥紝榪欐剰鍛崇潃瀹冨帇緙╁浘鐗囨瀬蹇騫朵笖涓嶄細瀵艱嚧闅愮佹垨鏁忔劅鍥劇墖娉勬紡緇欑涓夋柟銆

鏀鎸佺殑鍥劇墖鏍煎紡錛歫pg錛 jpeg錛 鏃犲浘鍍忓昂瀵擱檺鍒躲傛棤鏂囦歡澶у皬闄愬埗錛屾棤鍥懼儚鏁伴噺闄愬埗銆

瀹屽叏鍏嶈垂錛岃繕鍙浠ヤ換鎰忚皟鏁村浘鍍忕殑杈撳嚭璐ㄩ噺

Tiny PNG

Tiny PNG浣跨敤鏅鴻兘鏈夋崯鍘嬬緝鎶鏈鏉ュ噺灝忓浘鐗囨枃浠剁殑澶у皬銆

鏀鎸乄EB P錛 JPEG鍜孭NG鏍煎紡銆

Tiny PNG鐨勫師鐞嗘槸灝哖NG 24浣嶇湡褰╄壊鍥劇墖鍘嬬緝鎴怭NG 8浣嶇儲寮曞浘鐗囷紝 浠庤屽仛鍒板熀鏈涓嶆崯澶辯敾璐ㄥ拰瑙傛劅

鍏嶈垂鐗堟渶澶氭敮鎸20寮犲浘鐗囷紝姣忓紶鍥劇墖鏈澶5MB

doc small

doc small鏄鍦ㄧ嚎鏂囦歡澶勭悊宸ュ叿錛 鏃犻渶涓嬭澆杞浠訛紝閫氳繃浜戠鏈嶅姟鍙闇瑕佷笂浼犮佸勭悊銆佷笅杞界畝鍗曚笁姝ュ嵆鍙瀹屾垚鎿嶄綔錛 鐩鍓嶆湁鍥劇墖鍘嬬緝銆丟IF鍘嬬緝銆丳DF鍘嬬緝銆丳DF鍚堝苟銆丳DF鍒嗗壊鍔熻兘

鍥劇墖鍘嬬緝錛 鏀鎸丳NG鍜孞PG鏍煎紡

鏈澶氫竴嬈℃30寮犵収鐗囷紝鏈澶25MB

EZ GIF

涓涓寮哄ぇ鐨勫湪綰縂IF鍒朵綔鍣ㄥ拰宸ュ叿闆嗭紝 榪樺彲浠ョ敤浜庡熀鏈鐨勫姩鐢籊IF緙栬緫銆傚彲浠ュ壋寤猴紝 璋冩暣澶у皬錛岃佸壀錛 鍙嶈漿錛 浼樺寲鍜屽簲鐢ㄤ竴浜涙晥鏋滃埌GIF

榪樺寘鎷瑙嗛戣漿鎴愬姩鍥撅紝鍔ㄥ浘杞鎴愯嗛戱紝鍔熻兘闈炲父寮哄ぇ銆

鍙浠ュ緢濂界殑鍘嬬緝gif鍥劇墖鐨勫ぇ灝

Re compressor 浣犲彧闇閫夊彇涓騫呮垨澶氬箙鍥懼儚錛屼氦緇橰e compressor澶勭悊銆備細灝濊瘯澶氱嶉噸鏂板帇緙╋紝 浠ョ敓鎴愭枃浠跺昂瀵稿拰璐ㄩ噺鐨勫規瘮鍥撅紝騫朵笖鍙鑾峰彇瀹屾暣鍦ㄧ嚎棰勮

鏌ョ湅瀹屾暣鐨勭粨鏋滈勮堬紝浠繪剰涓嬭澆鎮ㄥ枩嬈㈢殑緇撴灉錛屽叏閮ㄥ厤璐廣傛棤騫垮憡銆傛棤闇娉ㄥ唽鐧誨綍鍗沖彲浣跨敤

Optimi zilla

Optimi zilla鍦ㄧ嚎鍥懼儚浼樺寲鍣ㄤ嬌鐢ㄤ紭鍖栧拰鍘嬬緝綆楁硶鏉ヨ揪鍒版渶灝忓昂瀵哥殑JPEG銆丟IF鍜孭NG鍥懼儚錛 鍚屾椂淇濊瘉浼樼鐨勫浘鍍忓帇緙╂瘮銆

鏀鎸佷笂浼犲氳揪20寮犲浘鍍忋傜瓑寰呭帇緙╁畬鎴愩

鍗曞嚮絳夊緟浠誨姟涓鐨勭緝鐣ュ浘瀹炵幇璐ㄩ噺璁劇疆銆備嬌鐢ㄦ粴鍔ㄦ潯鏉ヨ劇疆鍘嬬緝綰у埆鍜岄紶鏍/鎵嬪娍鏉ユ瘮杈冨浘鍍忋

④ VC++得到圖像數據太大,想要壓縮後再傳輸

下載一個CxImage(開源),用它來壓縮成jpg或其它格式再傳。
也可以使用ijl。

下面是我寫的使用CxImage的例子:
#include "xImage.h"
#include "CaptureScreen.h"
#pragma comment(lib,"cximage.lib")
#pragma comment(lib,"jpeg.lib")
#pragma comment(lib,"jasper.lib")

CAPTURESCREEN_API bool __stdcall Capture(char* lpszFile,unsigned int height,unsigned int width,unsigned char jpgQuality)
{
keybd_event(VK_SNAPSHOT,0,0,0);
keybd_event(VK_SNAPSHOT,0,KEYEVENTF_KEYUP,0);
if(!IsClipboardFormatAvailable(CF_DIB))return false;

HANDLE hBitmap = NULL;
if( OpenClipboard( NULL ))
{
hBitmap = GetClipboardData(CF_DIB);
CloseClipboard();
}
if( hBitmap == NULL )return false;

CxImage image;
if( image.CreateFromHANDLE(hBitmap) == false )return false;
image.Resample(width,height,1);
image.SetJpegQuality(jpgQuality);
image.Save(lpszFile,CXIMAGE_FORMAT_JPG);

return true;
}

閱讀全文

與c實現圖像壓縮相關的資料

熱點內容
掃毒3完整版免費觀看 瀏覽:597
有什麼都精通的程序員嗎 瀏覽:846
風險app在哪裡下載 瀏覽:67
在線免費觀看網站 瀏覽:834
國外男男片 瀏覽:333
復雜零件加工編程 瀏覽:794
pdf如何加深顏色 瀏覽:774
android文件刪除命令 瀏覽:915
快播 瀏覽:622
雲伺服器測試作業 瀏覽:737
書簽怎麼移動到文件夾 瀏覽:577
iosoppo怎麼把數據傳輸到安卓 瀏覽:236
sql預處理命令 瀏覽:319
linux安裝swftools 瀏覽:621
python執行環境 瀏覽:326
c語言回歸演算法 瀏覽:136
色階命令實現的功能為 瀏覽:49
盲區雷達編程匹配 瀏覽:685
輕量應用伺服器如何下載qq 瀏覽:962
數據存放在ecs雲伺服器 瀏覽:974