// Name: // Date: import java.util.*; import java.io.*; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import javax.swing.*; public class HuffmanPix { public static int WIDTH = 5; // 500 x 500 is too big public static int HEIGHT = 5; public static void main(String[] args) throws IOException { Scanner keyboard = new Scanner(System.in); System.out.print("Encoding using Huffman codes"); System.out.print("\nWhat image (including extension)? "); String pixName = keyboard.nextLine(); ImageIcon i = new ImageIcon(pixName); BufferedImage bufImg = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); JFrame f = new JFrame("HuffmanPix"); f.setSize(500,500); // width, height f.setLocation(100,50); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setContentPane(new DisplayPix(bufImg, i)); f.setVisible(true); System.out.print("\nEnter middle part of filename: "); String middlePart = keyboard.nextLine(); huffmanize( bufImg, middlePart ); System.exit(0); } public static void huffmanize(BufferedImage bufImg, String middlePart) throws IOException { /* your Huffman code goes here */ String binaryFileName = "pix." + middlePart + ".txt"; PrintWriter outfile = new PrintWriter(new FileWriter(binaryFileName)); outfile.print(code); System.out.println("Pix done"); Map huffmanScheme = new HashMap(); String schemeFile = "schemePix."+ middlePart + ".txt"; PrintWriter outfile2 = new PrintWriter(new FileWriter(schemeFile)); outfile2.println(""+ WIDTH +" " + HEIGHT); //outputs the width x height outfile2.println( /*the scheme */ ); System.out.println("Scheme done"); outfile.close(); outfile2.close(); } /* several Huffman methods go here */ } /* * This node stores two values. * The compareTo method must ensure that the lowest frequency has the highest priority. */ class HuffmanNode implements Comparable { } /* * Minimum code necessary to display a BufferedImage. */ class DisplayPix extends JPanel { private BufferedImage img; private Graphics g; public DisplayPix(BufferedImage bufImg, ImageIcon i) //for Huffman { int w = bufImg.getWidth(); int h = bufImg.getHeight(); img = bufImg; g = bufImg.getGraphics(); g.drawImage( i.getImage() , 0 , 0 , w , h, null ); } public DisplayPix(BufferedImage bufImg) //for deHuffman { img = bufImg; } public void paintComponent(Graphics g) { g.drawImage( img , 0 , 0 , getWidth() , getHeight() , null ); } }