⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 huffmancode.java

📁 java 实现的 huffman 编码
💻 JAVA
字号:
//HuffmanCode.java
/*
	程序说明:对图像进行复原。
	
	程序修改:
	
	最后修改时间:2008-11
	
	作者:朱磊
	
*/

import java.awt.Image;
import java.awt.image.PixelGrabber;

import javax.swing.JOptionPane;





public class HuffmanCode{
	Image im;
	Image tmp;
	int iw;
	int ih;
	int[] pixels;
	boolean flagLoad;
	
	//构造方法
	public HuffmanCode(Image im,boolean flagLoad){
		if(im==null)
		{
			 JOptionPane.showMessageDialog(null,"请先打开一幅图片!",
                     "Alert",JOptionPane.WARNING_MESSAGE);
			 
		}
		this.im = im;
		this.iw = im.getWidth(null);
		this.ih = im.getHeight(null);
		pixels=new int [iw*ih];
		// this.pixels=pixels;
		this.flagLoad = flagLoad;

		try {
			PixelGrabber pg = new PixelGrabber(im, 0, 0, iw, ih, pixels, 0, iw);
			pg.grabPixels();
		} catch (InterruptedException e3) {
			e3.printStackTrace();
		}
		
	}
		
	public  void jHuffmanCode_ActionPerformed(){
	if(flagLoad){
		try{
			PixelGrabber pg=new PixelGrabber(im,0,0,iw,ih,pixels,0,iw);
			pg.grabPixels();
			}catch (InterruptedException e3) {
				e3.printStackTrace();
			}	
		
	//保存图像的灰度
	int grey[]=new int [iw*ih];
	//获得图像的灰度值
	for(int i=0;i<iw*ih;i++)
	{
		grey[i]=pixels[i]&0xff;
	}	
	//对图像进行Huffman编码
	Huffman huffman=new Huffman(grey,iw,ih);
	System.out.println("iw:"+iw+"ih:"+ih);
	//h.test();
	huffman.huff();
	
	//图像熵
	float entropy;
	
	//平均码子长度
	float avgCode;
	
	//编码效率
	float efficiency;
	
	//出现频率
	float freq[]=new float[256];
	
	//Huffman编码
	String sCode[] =new String[256];
	
	entropy=huffman.getEntropy();
	avgCode=huffman.getAvgCode();
	efficiency=huffman.getEfficiency();
	
	//出现频率
	freq=huffman.getFreq();
	
	//Huffman编码
	sCode=huffman.getCode();
	
	
	//调用HuffmanShow.java进行显示
	HuffmanShow hs=new HuffmanShow(entropy,avgCode,efficiency);
	hs.setData(freq,sCode);
	hs.showTable();
	hs.setVisible(true);

//	repaint();
	}else{
 	JOptionPane.showMessageDialog(null,"请先打开一幅图片!",
           	 "Alert",JOptionPane.WARNING_MESSAGE);
           	}
}
	
	//定义main方法,设置窗口的大小,显示窗口
//	public static void main(String[] args) {
//		HuffmanCode hc = new HuffmanCode();
//		jHuffmanCode_ActionPerformed(im,iw,ih,pixels,flag);
//	} 

	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -