資源簡介
Java實現(xiàn)的JPEG算法,只有一個文件,但是支持調(diào)整壓縮質(zhì)量,方便學習圖像編碼
代碼片段和文件信息
//?Version?1.0a
//?Copyright?(C)?1998?James?R.?Weeks?and?BioElectroMech.
//?Visit?BioElectroMech?at?www.obrador.com.??Email?James@obrador.com.
//?See?license.txt?for?details?about?the?allowed?used?of?this?software.
//?This?software?is?based?in?part?on?the?work?of?the?Independent?JPEG?Group.
//?See?IJGreadme.txt?for?details?about?the?Independent?JPEG?Group‘s?license.
//?This?encoder?is?inspired?by?the?Java?Jpeg?encoder?by?Florian?Raemy
//?studwww.eurecom.fr/~raemy.
//?It?borrows?a?great?deal?of?code?and?structure?from?the?Independent
//?Jpeg?Group‘s?Jpeg?6a?library?Copyright?Thomas?G.?Lane.
//?See?license.txt?for?details.
import?java.applet.applet;
import?java.awt.*;
import?java.awt.image.*;
import?java.io.*;
import?java.util.*;
import?java.lang.*;
/*
*?JpegEncoder?-?The?JPEG?main?program?which?performs?a?jpeg?compression?of
*?an?image.
*/
public?class?JpegEncoder?extends?frame
{
????Thread?runner;
????BufferedOutputStream?outStream;
????Image?image;
????JpegInfo?JpegObj;
????Huffman?Huf;
????DCT?dct;
????int?imageHeight?imageWidth;
????int?Quality;
????int?code;
????public?static?int[]?jpegNaturalOrder?=?{
??????????0??1??8?16??9??2??3?10
?????????17?24?32?25?18?11??4??5
?????????12?19?26?33?40?48?41?34
?????????27?20?13??6??7?14?21?28
?????????35?42?49?56?57?50?43?36
?????????29?22?15?23?30?37?44?51
?????????58?59?52?45?38?31?39?46
?????????53?60?61?54?47?55?62?63
????????};
????public?JpegEncoder(Image?image?int?quality?OutputStream?out)
????{
????????????????MediaTracker?tracker?=?new?MediaTracker(this);
????????????????tracker.addImage(image?0);
????????????????try?{
????????????????????????tracker.waitForID(0);
????????????????}
????????????????catch?(InterruptedException?e)?{
//?Got?to?do?something?
????????????????}
????????/*
????????*?Quality?of?the?image.
????????*?0?to?100?and?from?bad?image?quality?high?compression?to?good
????????*?image?quality?low?compression
????????*/
????????Quality=quality;
????????/*
????????*?Getting?picture?information
????????*?It?takes?the?Width?Height?and?RGB?scans?of?the?image.?
????????*/
????????JpegObj?=?new?JpegInfo(image);
????????imageHeight=JpegObj.imageHeight;
????????imageWidth=JpegObj.imageWidth;
????????outStream?=?new?BufferedOutputStream(out);
????????dct?=?new?DCT(Quality);
????????Huf=new?Huffman(imageWidthimageHeight);
????}
????public?void?setQuality(int?quality)?{
????????dct?=?new?DCT(quality);
????}
????public?int?getQuality()?{
????????return?Quality;
????}
????public?void?Compress()?{
????????WriteHeaders(outStream);
????????WriteCompressedData(outStream);
????????WriteEOI(outStream);
????????try?{
????????????????outStream.flush();
????????}?catch?(IOException?e)?{
????????????????System.out.println(“IO?Error:?“?+?e.getMessage());
????????}
????}
????public?void?WriteCompressedData(BufferedOutputStream
- 上一篇:javaweb登陸注冊界面
- 下一篇:java+Access登陸界面
評論
共有 條評論