/* Color_Transformation written July 1, 2001 by Frank Wattenberg Version 0.00 */ import java.awt.*; import java.awt.image.*; import java.applet.*; import java.lang.*; import java.util.*; public class Color_Transformation extends Applet { Image bI, picture; Graphics bG; String picture_filename; int width, height; double red_constant, red_from_red, red_from_blue, red_from_green; double blue_constant, blue_from_red, blue_from_blue, blue_from_green; double green_constant, green_from_red, green_from_blue, green_from_green; int picture_array[] = new int[1000000]; PixelGrabber get_picture; public void init() { double red, green, blue, work; double new_red, new_green, new_blue; int work_red, work_green, work_blue; red_constant = java.lang.Double.valueOf( getParameter("red_constant")).doubleValue(); red_from_red = java.lang.Double.valueOf( getParameter("red_from_red")).doubleValue(); red_from_blue = java.lang.Double.valueOf( getParameter("red_from_blue")).doubleValue(); red_from_green = java.lang.Double.valueOf( getParameter("red_from_green")).doubleValue(); blue_constant = java.lang.Double.valueOf( getParameter("blue_constant")).doubleValue(); blue_from_red = java.lang.Double.valueOf( getParameter("blue_from_red")).doubleValue(); blue_from_blue = java.lang.Double.valueOf( getParameter("blue_from_blue")).doubleValue(); blue_from_green = java.lang.Double.valueOf( getParameter("blue_from_green")).doubleValue(); green_constant = java.lang.Double.valueOf( getParameter("green_constant")).doubleValue(); green_from_red = java.lang.Double.valueOf( getParameter("green_from_red")).doubleValue(); green_from_blue = java.lang.Double.valueOf( getParameter("green_from_blue")).doubleValue(); green_from_green = java.lang.Double.valueOf( getParameter("green_from_green")).doubleValue(); width = Integer.parseInt(getParameter("width")); height = Integer.parseInt(getParameter("height")); bI = createImage(width, height); bG = bI.getGraphics(); picture_filename = getParameter("picture_filename"); picture = getImage(getCodeBase(), picture_filename); get_picture = new PixelGrabber(picture, 0, 0, width, height, picture_array, 0, width); try {get_picture.grabPixels();} catch(Exception e) {} for (int i = 0; i < width * height; i = i + 1) { red = (0xff & (picture_array[i] >> 16)); green = (0xff & (picture_array[i] >> 8)); blue = (0xff & picture_array[i]); new_red = 255 * red_constant + red_from_red * red + red_from_green * green + red_from_blue * blue; new_green = 255 * green_constant + green_from_red * red + green_from_green * green + green_from_blue * blue; new_blue = 255 * blue_constant + blue_from_red * red + blue_from_green * green + blue_from_blue * blue; work = java.lang.Math.max(0, java.lang.Math.min(255, new_red)); work_red = (int) java.lang.Math.round(work); work = java.lang.Math.max(0, java.lang.Math.min(255, new_green)); work_green = (int) java.lang.Math.round(work); work = java.lang.Math.max(0, java.lang.Math.min(255, new_blue)); work_blue = (int) java.lang.Math.round(work); picture_array[i] = 0xFF000000 | (work_red << 16) | (work_green << 8) | work_blue; } bI = createImage( new MemoryImageSource(width, height, picture_array, 0, width)); } public void paint(Graphics g) { g.drawImage(bI, 0, 0, this); } }