當前位置:首頁 » 操作系統 » cjpg壓縮演算法

cjpg壓縮演算法

發布時間: 2022-12-25 19:21:28

A. 用java能實現JPEG壓縮演算法

BufferedImageimage=newBufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
image.getGraphics().drawImage(img,0,0,w,h,null);//繪制縮小後的圖
FiledestFile=newFile("C:\tmp1.jpg");
FileOutputStreamout=newFileOutputStream("C:\tmp2.jpg");//輸出到文件流
JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();

B. C語言實現把一個JPG圖片分解為兩個圖片,急!!謝謝

麻煩。。無聊。。
先找著jpg文件頭格式。。
C打開文件。。找到數據部分。。
新建文件。。寫入。。保存。。
綜上所述:無聊+麻煩。

C. jpg壓縮成85%和100%有什麼差別嗎

你可以看看下面的壓縮原理

你的諾基亞是在量化和編碼的時候實現壓縮的,前二個步驟在你的手機上是不變的。唯一也就是存的時候小一些,像素會有缺失。80%壓縮率,人眼是不太容易看出來的.但是如果你想列印的話,大到一定的程序時還是需要不壓縮才行的,比如你洗20寸的大尺寸像片。

以下是JPG壓縮原理
JPEG壓縮分四個步驟實現:
1.顏色模式轉換及采樣;
2.DCT變換;
3.量化;
4.編碼。
二.
1.顏色模式轉換及采樣 RGB色彩系統是我們最常用的表示顏色的方式。JPEG採用的是YCbCr色彩系統。想要用JPEG基本壓縮法處理全彩色圖像,得先把RGB顏色模式圖像數據,轉換為YCbCr顏色模式的數據。Y代表亮度,Cb和Cr則代表色度、飽和度。通過下列計算公式可完成數據轉換。 Y=0.2990R+0.5870G+0.1140B Cb=-0.1687R-0.3313G+0.5000B+128 Cr=0.5000R-0.4187G-0.0813B+128 人類的眼晴對低頻的數據比對高頻的數據具有更高的敏感度,事實上,人類的眼睛對亮度的改變也比對色彩的改變要敏感得多,也就是說Y成份的數據是比較重要的。既然Cb成份和Cr成份的數據比較相對不重要,就可以只取部分數據來處理。以增加壓縮的比例。JPEG通常有兩種采樣方式:YUV411和YUV422,它們所代表的意義是Y、Cb和Cr三個成份的數據取樣比例。
2.DCT變換 DCT變換的全稱是離散餘弦變換(Discrete Cosine Transform),是指將一組光強數據轉換成頻率數據,以便得知強度變化的情形。若對高頻的數據做些修飾,再轉回原來形式的數據時,顯然與原始數據有些差異,但是人類的眼睛卻是不容易辨認出來。 壓縮時,將原始圖像數據分成8*8數據單元矩陣,例如亮度值的第一個矩陣內容如下:
JPEG將整個亮度矩陣與色度Cb矩陣,飽和度Cr矩陣,視為一個基本單元稱作MCU。每個MCU所包含的矩陣數量不得超過10個。例如,行和列采樣的比例皆為4:2:2,則每個MCU將包含四個亮度矩陣,一個色度矩陣及一個飽和度矩陣。 當圖像數據分成一個8*8矩陣後,還必須將每個數值減去128,然後一一代入DCT變換公式中,即可達到DCT變換的目的。圖像數據值必須減去128,是因為DCT轉換公式所接受的數字范圍是在-128到+127之間。 DCT變換公式:
x,y代表圖像數據矩陣內某個數值的坐標位置f(x,y)代表圖像數據矩陣內的數個數值u,v代表DCT變換後矩陣內某個數值的坐標位置F(u,v)代表DCT變換後矩陣內的某個數值 u=0 且 v=0 c(u)c(v)=1/1.414 u>0 或 v>0 c(u)c(v)=1 經過DCT變換後的矩陣數據自然數為頻率系數,這些系數以F(0,0)的值最大,稱為DC,其餘的63個頻率系數則多半是一些接近於0的正負浮點數,一概稱之為AC。
3、量化 圖像數據轉換為頻率系數後,還得接受一項量化程序,才能進入編碼階段。量化階段需要兩個8*8矩陣數據,一個是專門處理亮度的頻率系數,另一個則是針對色度的頻率系數,將頻率系數除以量化矩陣的值,取得與商數最近的整數,即完成量化。 當頻率系數經過量化後,將頻率系數由浮點數轉變為整數,這才便於執行最後的編碼。不過,經過量化階段後,所有數據只保留整數近似值,也就再度損失了一些數據內容,JPEG提供的量化表如下:

4、編碼 Huffman編碼無專利權問題,成為JPEG最常用的編碼方式,Huffman編碼通常是以完整的MCU來進行的。 編碼時,每個矩陣數據的DC值與63個AC值,將分別使用不同的Huffman編碼表,而亮度與色度也需要不同的Huffman編碼表,所以一共需要四個編碼表,才能順利地完成JPEG編碼工作。 DC編碼 DC是彩採用差值脈沖編碼調制的差值編碼法,也就是在同一個圖像分量中取得每個DC值與前一個DC值的差值來編碼。DC採用差值脈沖編碼的主要原因是由於在連續色調的圖像中,其差值多半比原值小,對差值進行編碼所需的位數,會比對原值進行編碼所需的位數少許多。例如差值為5,它的二進製表示值為101,如果差值為-5,則先改為正整數5,再將其二進制轉換成1的補數即可。所謂1的補數,就是將每個Bit若值為0,便改成1;Bit為1,則變成0。差值5應保留的位數為3,下表即列出差值所應保留的Bit數與差值內容的對照。
在差值前端另外加入一些差值的霍夫曼碼值,例如亮度差值為5(101)的位數為3,則霍夫曼碼值應該是100,兩者連接在一起即為100101。下列兩份表格分別是亮度和色度DC差值的編碼表。根據這兩份表格內容,即可為DC差值加上霍夫曼碼值,完成DC的編碼工作。
AC編碼 AC編碼方式與DC略有不同,在AC編碼之前,首先得將63個AC值按Zig-zag排序,即按照下圖箭頭所指示的順序串聯起來。
63個AC值排列好的,將AC系數轉換成中間符號,中間符號表示為RRRR/SSSS,RRRR是指第非零的AC之前,其值為0的AC個數,SSSS是指AC值所需的位數,AC系數的范圍與SSSS的對應關系與DC差值Bits數與差值內容對照表相似。 如果連續為0的AC個數大於15,則用15/0來表示連續的16個0,15/0稱為ZRL(Zero Rum Length),而(0/0)稱為EOB(Enel of Block)用來表示其後所剩餘的AC系數皆等於0,以中間符號值作為索引值,從相應的AC編碼表中找出適當的霍夫曼碼值,再與AC值相連即可。 例如某一組亮度的中間符為5/3,AC值為4,首先以5/3為索引值,從亮度AC的Huffman編碼表中找到1111111110011110霍夫曼碼值,於是加上原來100(4)即是用來取[5,4]的Huffman編碼1111111110011110100,[5,4]表示AC值為4的前面有5個零。 由於亮度AC,色度AC霍夫曼編碼表比較長,在此省略去,有興趣者可參閱相關書籍。 實現上述四個步驟,即完成一幅圖像的JPEG壓縮。 參考資料[1] 林福宗 《圖像文件格式(上)——Windows 編程》,清華大學出版社, 1996年[2] 李振輝、李仁各編著,《探索圖像文件的奧秘》,清華大學出版社,1996年[3] 黎洪松、成實譯《JPEG靜止數據壓縮標准》,學苑出版社,1996年

D. mfc如何將bitmap壓縮成jpg

兩個選擇:

  1. 使用演算法代碼。演算法代碼還是比較復雜的,完全自己去研究jpg壓縮演算法很困難,網路搜「C++壓縮演算法JPG」,有示例代碼可以使用。

  2. 用GDI+。這個比較簡單,不過也不是兩句話說的明白的,研究一下CImage類的使用,這個網上例子也很多。

E. 圖片文件怎樣壓縮到20K以內

想要將JPG格式照片壓縮至20KB,最主要的問題是圖片尺寸大小。分享一款小編經常使用的壓縮軟體,小夥伴們可以放心下載哈~

→點擊下載正版無損壓縮軟體(請在電腦端下載軟體)

簡介:這是一款集視頻壓縮、圖片壓縮、PDF壓縮、PPT壓縮以及Word文檔壓縮於一體的多功能壓縮軟體,軟體無廣告、無捆綁軟體,佔用內存小~

推薦理由:
1、BMP、PNG、JPG等市面上主流的圖片格式均支持,包括GIF動圖也能夠輕松壓縮完成;
2、壓縮質量與壓縮比可根據個人需求自定義調節,均衡質量與大小,保證圖片清晰度情況下壓縮大小;
3、軟體升級最新演算法,搭建強勁內核,壓縮效率更快速,即便是小白用戶也不用擔心有學習壓力;
4、售前售後客服態度好,有任何問題都可以聯系客服得到有效的幫助及解決;

將圖片壓縮到20K以下的具體操作步驟:
第一步:點擊上方鏈接下載並安裝嗨格式壓縮大師,找到主界面中的「圖片壓縮」,點擊「圖片壓縮」進入到操作頁面;
第二步:進入圖片壓縮界面後,將需要壓縮的圖片拖拽進去就可以壓縮了,如果是多個圖片,可以直接一並添加(這款軟體支持批量壓縮哦~)
第三步:圖片添加完成後,如果你對圖片有不同壓縮需求,可以在軟體頁面右側進行圖片壓縮的各項參數設置;嗨格式壓縮大師支持手動調節圖片參數,包括按比特率、文件大小等設置,數值越小壓縮後的文件就越小。
以上就是完整的操作步驟了,只需要三步就可以解決,即便是電腦小白也可以快速解決,只需要下載嗨格式壓縮大師就可以了,如果遇到了什麼問題也可以聯系客服快速解決~

F. c++如何打開jpg圖像

你的問題的主要困難在於解壓縮。 .tiff格式與.bmp相似,通常都沒有壓縮或者只有簡單的RLE壓縮。但.jpg與此不同,它通常採用四道壓縮工序,壓縮演算法很復雜,裡面涉及很多數學(從jpeg的英文名字「聯合圖像專家組」就可以感受到),所以解壓縮的過程是很繁瑣的。另外windows內建對jpeg格式的支持,因此通常沒有人會自己寫這些解壓縮演算法,又費力又容易出錯,效率還不如微軟的演算法。用Windows SDK中的IPicture可以讀取jpeg文件並直接得到圖像的RGB值,你需要去MSDN查一下相關的文件。 如果你對自己的數學基礎有信心,而且一定想要知道jpeg的壓縮/解壓縮原理,那麼下面這篇水母的文章可能對你有用(反正我看了幾句就看不懂了): 水木社區(展開完整界面) → 數字多媒體應用 → 精華區文章閱讀 DigiMedia 版 (精華區) 6.3 JPEG格式 6.3.1 簡介 微處理機中的存放順序有正序(big endian)和逆序(little endian)之分。正序存放就是 高位元組存放在前低位元組在後,而逆序存放就是低位元組在前高位元組在後。例如,十六進制 數為A02B,正序存放就是A02B,逆序存放就是2BA0。摩托羅拉(Motorola)公司的微處理 器使用正序存放,而英特爾(Intel)公司的微處理器使用逆序。JPEG文件中的位元組是按照 正序排列的。 ---------------------------------------------------------------------------- ---- JPEG委員會在制定JPEG標准時,定義了許多標記(marker)用來區分和識別圖像數據及其 相關信息,但筆者沒有找到JPEG委員會對JPEG文件交換格式的明確定義。直到1998年12 月從分析網上具體的JPG圖像來看,使用比較廣泛的還是JPEG文件交換格式(JPEG File Interchange Format,JFIF)版本號為1.02。這是1992年9月由在C-Cube Microsystems公 司工作的Eric Hamilton提出的。此外還有TIFF JPEG等格式,但由於這種格式比較復雜 ,因此大多數應用程序都支持JFIF文件交換格式。 JPEG文件使用的顏色空間是CCIR 601推薦標准進行的彩色空間(參看第7章)。在這個彩色 空間中,每個分量、每個像素的電平規定為255級,用8位代碼表示。從RGB轉換成YCbCr 空間時,使用下面的精確的轉換關系: Y = 256 * E'y Cb = 256 * [E'Cb] + 128 Cr = 256 * [E'Cr] + 128 其中亮度電平E'y和色差電平E'Cb和E'Cb分別是CCIR 601定義的參數。由於E'y的范圍是 0~1,E'Cb和E'Cb的范圍是-0.5~+0.5,因此Y, Cb和Cr的最大值必須要箝到255。於是 RGB和YCbCr之間的轉換關系需要按照下面的方法計算。 (1) 從RGB轉換成YCbCr YCbCr(256級)分量可直接從用8位表示的RGB分量計算得到: Y = 0.299 R + 0.587 G + 0.114 B Cb = - 0.1687R - 0.3313G + 0.5 B + 128 Cr = 0.5 R - 0.4187G - 0.0813 B + 128 需要注意的是不是所有圖像文件格式都按照R0,G0,B0,…… Rn,Gn,Bn的次序存儲樣 本數據,因此在RGB文件轉換成JFIF文件時需要首先驗證RGB的次序。 (2) 從YCbCr轉換成RGB RGB分量可直接從YCbCr(256級)分量計算得到: R = Y + 1.402 (Cr-128) G = Y - 0.34414 (Cb-128) - 0.71414 (Cr-128) B = Y + 1.772 (Cb-128) 在JFIF文件格式中,圖像樣本的存放順序是從左到右和從上到下。這就是說JFIF文件中 的第一個圖像樣本是圖像左上角的樣本。 6.3.2 文件結構 JFIF文件格式直接使用JPE

G. 壓縮的演算法都有哪些

只有最常見的zip的,估計你都要研究上n久了。。。
文本文件一般有zip,rar,
網頁文件有htz
視頻文件有rm,avi
語音文件有mp3,
圖片文件有png,gif,jpg

這些都是文件壓縮的。。。。

------------------------------------

ZIP文件的總體格式
分文件頭信息+文件壓縮數據
中心目錄+中心目錄記錄結束符

1.分文件頭信息:
位元組數 描述
4 分文件頭信息標志(0x04034b50)
2 解壓縮所需版本
2 通用比特標志位(置比特0位=加密;置比特1位=使用壓
縮方式6,並使用8k變化目錄,否則使用4k變化目錄;置比特2位=使用壓
縮方式6,並使用3個ShannonFano樹對變化目錄輸出編碼,否則使用2個
ShannonFano樹對變化目錄輸出編碼,其它比特位未用)
2 壓縮方式(0=不壓縮,1=縮小,2=以壓縮因素1縮小,3=以
壓縮因素2縮小,4=以壓縮因素3縮小,5=以壓縮因素4縮小,6=自展)
2 文件最後修改時間
2 文件最後修改日期
4 32位校驗碼
4 壓縮文件大小
4 未壓縮文件大小
2 文件名長
2 擴展段長
? 文件名(不定長)
? 擴展段(不定長)

2.中心目錄結構
文件頭信息...中心目錄記錄結束符
文件頭:
位元組數 描述
4 中心文件頭信息標志(0x02014b50)
2 主機操作系統(高位位元組表示主機操作系統,低位字
節表示ZIP壓縮軟體版本號,其值除以10表示主版本號,其值模10表示
次版本號。0=MS-DOS,OS/2 FAT文件系統,1=Ami ga,2=VMS,3=Unix及
變種,4=VM/CMS,5=AtariST,6=OS/2 HPFS,7=Macintosh,8=Z-System,9
=C P/M,10-255未用)
2 解壓縮所需版本
2 通用比特標志
2 壓縮方式
2 文件最後修改時間(用標準的MS-DOS時間日 期格式
編碼)
2 文件最後修改日期
4 32位校驗碼(使用David Schwaderer的CRC-32演算法產
生)
4 壓縮文件大小
4 未壓縮文件大小
2 文件名長
2 擴展段長
2 文件注釋長(分別為文件名長,擴展段,注釋 段,小於
64K)
2 磁碟起始號(本文件在磁碟中的起始號)
2 內部文件屬性(最低位若置1,表示為ASC文本,否則為
二進制數據,其它位未用)
4 外部文件屬性(依賴於主機操作系統)
4 分文件頭相對位移
? 文件名(不定長)
? 擴展段(不定長,用於未來擴展,低版本為0長)
? 文件注釋(不定長)

3.中心目錄記錄結束符
位元組數 描述
4 中心目錄標記結束符(0x06054b50)
2 磁碟號(其中包括中心目錄結束記錄)
2 磁碟中心目錄起始號
2 磁碟中心目錄入口總數
2 中心目錄入口總數(ZIP文件中的文件總數)
2 整個中心目錄大小
4 關於起始磁碟號的中心目錄初始偏移
2 ZIP文件注釋長度
? ZIP文件注釋(不定長)

加密方法
PKZIP中使用的加密方法由Roger Schlafly提供。ZIP文件在解壓
縮前必須先解密。每個加密文件具有一個12位元組的加密文件頭擴展信
息,存儲於數據區的起始位置,加密前先設置一個起始值,然後被三個3
2位的密鑰加密。密鑰被使用者提供的口令初始化。12個位元組加密之
後,由PKZIP的偽隨機數產生方法,結合PKZIP中使用CRC-32演算法對密鑰
進行更新。
具體實施分為三步:

1.用口令對三個32位密鑰初始化。
K(0)=305419896,K(1)=591751049,K(2)=878082192
循環 for i=0 to length(password)-1
調用更新密鑰函數 update_keys(password(i))
結束循環(循環口令長度次)
其中更新密鑰函數為:
update_keys(char):
Key(0)=crc32(key(0),char)
Key(1)=Key(1)+(Key(0)& 000000ffH)
Key(1)=Key(1)*134775813+1
Key(2)=crc32(Key(2),Key(1)〉〉24)
end update_keys
CRC32函數中,給定一個4位元組的CRC值和一個字元,返回一個由CRC
-32演算法更新的CRC。具體為:
crc32(c,b)=crc32tab[(c^b)&0xff]^(c>>8),crc32tab[256]的值
為固定的256個4位元組數。

2.讀取並加密12位元組的加密頭,再次對密鑰進行初始化。
將12個位元組的加密頭讀入緩沖區buffer(0)至buffer(11),循環fo
r i=0 to 11
C=buffer(i)^decrypt_byte()
update_keys(C)
buffer(i)=C
結束循環(循環12次)
其中的decrypt_byte()函數為:
unsigned char decrypt_byte()
local unsigned short temp
temp=Key(2)¦2
decrypt_byte=((temp*(temp^1))>>8)&0xff
end decrypt_byte
該步結束後,緩沖區中最後的二個位元組buffer(10)和buffer(11)
將成為加密文件校驗碼的二個最高位(按低至高順序存放)。對ZIP加
密文件進行解壓縮前,PKUNZIP軟體將使用者提供的口令按上述二個步
驟進行處理,得到的結果與校驗碼的二個高位位元組進行比較,只有當提
供了正確的口令時,結果一致,才能進行後續的解壓縮過程,否則,PKZI
P報告錯誤信息,程序自動結束。

3.讀取壓縮的數據流並以加密密鑰對其進行加密。
壓縮數據流按下述過程加密:
循環 直至數據流結束
C=數據流的一個位元組
temp=C^decrypt_byte()
update_keys(temp)
輸出temp
結束循環

H. 如何查看jpg的壓縮率

一樣,用photoshop打開你要查看的圖片,點「文件」->「存儲為」,點「保存」,接下來的JPEG選項中顯示的品質就是該文件當前的壓縮等級,然後點「取消」即可
注意:需要時調小品質可減少圖片體積,同時降低圖像質量,但不宜在此將其調大,因為這樣做只會增加圖片體積而並不會改善圖像質量,不劃算

I. 關於照片縮放問題

一種辦法:Adobe Illustrator CS4 可以把照片矢量化, http://58.251.57.206/down?cid= 你下載這個安裝就行,很簡單。 實用方法,把照片拖到軟體裡面,選中照片,在上面的屬性欄中,有個【實時臨摹】的按鈕,點擊旁邊的小三角,就出來下拉列表,可以根據自己的需要選擇相應的轉換類型。我也給你截圖了。轉換完之後,再點擊屬性欄中的有個【擴展】按鈕,你點擊一下,就能進行編輯,然後導出。轉成矢量的就可以無限放大。 我也不知道你是想轉個什麼圖片,簡單的這樣轉還可以,復雜的圖就轉換質量差一點。



第二種辦法:用 圖片無損放大 BenVista PhotoZoom Pro 3.0.2 中文綠色版 下載地址:http://www.xp510.com/soft/5/125/12941.html 能比單純用PS放大的效果好很多,一學就會的軟體。 我不知道你放大那麼大幹什麼,假如列印的話,沒這樣大的列印機吧,一般是噴繪和寫真吧,這樣你可以把像素調低一點,尺寸相應還能大。最高72像素,噴繪40多像素就可以。
熱點內容
伺服器少個陣列卡盤符怎麼找出來 發布:2025-05-11 02:34:07 瀏覽:635
鬥地主源碼開發 發布:2025-05-11 02:24:07 瀏覽:366
雲伺服器怎麼設置攻擊 發布:2025-05-11 02:22:09 瀏覽:826
python嵌套for循環 發布:2025-05-11 01:51:44 瀏覽:228
安卓怎麼取消後台限制 發布:2025-05-11 01:45:45 瀏覽:258
一鍵搭建sk5伺服器 發布:2025-05-11 01:40:09 瀏覽:514
鴻業acs加密鎖模擬器 發布:2025-05-11 01:38:49 瀏覽:938
神廟逃亡2安卓版怎麼玩 發布:2025-05-11 01:38:05 瀏覽:162
凱傑都什麼配置 發布:2025-05-11 01:38:04 瀏覽:472
php微信開源系統源碼 發布:2025-05-11 01:37:54 瀏覽:814