Package com.gurge.amd

Source Code of com.gurge.amd.TestQuantize

/*
* @(#)TestQuantize.java    0.90 9/19/00 Adam Doppelt
*/

package com.gurge.amd;

import java.awt.Image;
import java.awt.image.MemoryImageSource;
import java.awt.image.PixelGrabber;
import java.io.File;
import java.io.IOException;

/**
* Test color quantization of an image.
*
* <p><b>Usage: Test [image file] [# colors] [# colors] ...</b><p>
*
* For example:
*
*   <pre>java quantize.TestQuantize gub.jpg 100 50 20 10</pre>
*
* will display gub.jpg with 100, 50, 20, and 10 colors.
*
* @version 0.90 19 Sep 2000
* @author <a href="http://www.gurge.com/amd/">Adam Doppelt</a>
*/
public class TestQuantize {

 
  public static MemoryImageSource makeImage(int palette[], int pixels[][]) {
    int w = pixels.length;
    int h = pixels[0].length;
    int pix[] = new int[w * h];
   
    // convert to RGB
    for (int x = w; x-- > 0; ) {
      for (int y = h; y-- > 0; ) {
        pix[y * w + x] = palette[pixels[x][y]];
      }
    }
    return new MemoryImageSource(w, h, pix, 0, w);
  }
 

    /**
     * Snag the pixels from an image.
     */
    public static int[][] getPixels(Image image) throws IOException {
        int w = image.getWidth(null);
        int h = image.getHeight(null);       
        int pix[] = new int[w * h];
        PixelGrabber grabber = new PixelGrabber(image, 0, 0, w, h, pix, 0, w);
       
        try {
            if (grabber.grabPixels() != true) {
                throw new IOException("Grabber returned false: " +
                                      grabber.status());
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        int pixels[][] = new int[w][h];
        for (int x = w; x-- > 0; ) {
            for (int y = h; y-- > 0; ) {
                pixels[x][y] = pix[y * w + x];
            }
        }
       
        return pixels;
    }

    public static void main(String args[]) throws IOException {
        ImageFrame original = new ImageFrame();
        original.setImage(new File(args[0]));
        original.setTitle("original");

        int x = 100;
        int y = 100;
        original.setLocation(x, y);

        for (int i = 1; i < args.length; ++i) {
            x += 20;
            y += 20;
            int pixels[][] = getPixels(original.getImage());
            long tm = System.currentTimeMillis();

            // quant
            int palette[] = Quantize.quantizeImage(pixels, Integer.parseInt(args[i]));
            tm = System.currentTimeMillis() - tm;
            System.out.println("reduced to " + args[i] + " in " + tm + "ms");
            ImageFrame reduced = new ImageFrame();
            reduced.setImage(palette, pixels);
           
            reduced.setTitle(args[i] + " colors");
            reduced.setLocation(x, y);
        }
    }
}
TOP

Related Classes of com.gurge.amd.TestQuantize

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.