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

📄 equilize.java

📁 java版的位图处理
💻 JAVA
字号:
/**
 *说明:直方图均衡化
 *日期:04.10.13
 *作者:李向彬 
 *版本:v1.0
 */
 import java.io.*;
 import bmpinfo.Bmp_Information;
 
 public class Equilize
 {
 	static long pos=54;
 	RandomAccessFile Rfile=null;
 	Bmp_Information pro;
 	File temp=null;
 	File tempfile=null;
 	int[] newlevel=new int[256];
 	public Equilize(String filename)
 	{	
	 	try{
	 		File file=File.createTempFile("temp",".bmp");
	 		temp=file;
	 		file.deleteOnExit();
	 		tempfile=newFile(new File(filename),file);
	 	}catch(IOException e){System.out.println("复制文件出错:"+e);}
 		pro=new Bmp_Information(filename);
 		try{
	 		Rfile=new RandomAccessFile(tempfile,"rws");
	 	}catch(FileNotFoundException e){
	 		System.out.println("文件没有找到。");
	 	}
 	}
 	public void equipoise()
 	{
 		int []graylevel=pro.getGraylevel();
 		int []palette=new int[1024];
 		try{
 			Rfile.seek(pos);
 			for(int m=0;m<1024;m++)
 			{
 				palette[m]=Rfile.readUnsignedByte();
 			}
	 		for(int i=0;i<256;i++)
	 		{
	 			newlevel[i]=mincount(graylevel,i)*255/maxcount(graylevel);
	 		}
	 		for(int j=0;j<1024;j++)
	 		{
				if((j+1)%4==0){continue;}
				else{
					int level=newlevel[palette[j]];
					palette[j]=level;
				}
			}
			Rfile.seek(pos);
			for(int n=0;n<1024;n++)
			{
		 		Rfile.writeByte(palette[n]);
		 	}
	 	}catch(IOException e)
	 	{
	 		System.out.println("读写文件出错:"+e);
	 	}finally{
	 		try{
	 			Rfile.close();
	 		}catch(IOException ee){}
	 	}
 	}
	public static int mincount(int[] array,int index)
	 {
	 	int count=0;
	 	for(int i=0;i<=index;i++)
	 	{
	 		count+=array[i];
	 	}
	 	return count;
	 }
	public static int maxcount(int[] array)
	 {
	 	int count=0;
	 	for(int i=0;i<array.length;i++)
	 	{
	 		count+=array[i];
	 	}
	 	return count;
	}
	public static File newFile(File source,File aim)
	{
		BufferedInputStream bfs=null;
		BufferedOutputStream bos=null;
		int size=(int)source.length();
		byte[] date=new byte[size];
		try{
			bfs=new BufferedInputStream(new FileInputStream(source));
			int datasize=bfs.read(date,0,size);
			bos=new BufferedOutputStream(new FileOutputStream(aim));
			bos.write(date,0,size);
		}catch(Exception e){
			System.out.println(e);
		}finally{
			try{
				bfs.close();
				bos.close();
			}catch(IOException e){}
		}
		return aim;	
	}	
}
			
 			
 			
 		

⌨️ 快捷键说明

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