All pastes #2047676 Raw Edit

jjj

public java v1 · immutable
#2047676 ·published 2011-04-18 08:47 UTC
rendered paste body
package beispiele;/*	 * 	Lecture: Computer Graphics * 	Project: Color Inversion * 	 * 	Author:	 Marcus Stelke, Volker Schneider *  Date:    04. April 2011	 *  *  Version: 0.0.2 */	import java.awt.*;import java.awt.geom.AffineTransform;import java.awt.image.BufferedImage;import java.util.Date;import java.util.Timer;import java.util.TimerTask;public class Verzerren extends TimerTask {		private BufferedImageDrawer buffImage;	private Image myImage;	 	private boolean check = false;	private double newHeight;	private int changeHeight;	// um wieviel das Bild verzogen werden soll	private int height, width;	private Color[][][] pixelColor;			public Verzerren(String img, BufferedImageDrawer bid, int height, int width, int delay) {		this.setImage(img);		this.height = height;			this.width = width;			this.changeHeight = height;														buffImage = bid;																						//Das Buffered Image wird geladen, damit wir damit arbeiten können		//		// // Y-ACHSE IN REAL-KOORDINATEN TRANFORMIEREN//		AffineTransform yUp = new AffineTransform();//		yUp.setToScale(1, -1);//		AffineTransform translate = new AffineTransform();//		translate.setToTranslation(0, buffImage.bi.getHeight() * 2);//		yUp.preConcatenate(translate);//		buffImage.g2dbi.transform(yUp);				buffImage.g2dbi.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);	//Antialising		buffImage.g2dbi.drawImage(myImage,0,height/2,null);															//das Arbeitsbild das erste mal bemalen, damit wir die Farbwerte auslesen können		System.out.println("Höhe:   " + height/2 + "px");		System.out.println("Breite: " + width + "px");		System.out.println((width*height)+ " Pixel");	}		public void run() {						//Arbeitsbild neu malen		buffImage.repaint();					float m = ((float) ((buffImage.bi.getHeight()*2) - buffImage.bi.getHeight()) / (buffImage.bi.getWidth() - 0));		int n = buffImage.bi.getHeight();		for (int y = buffImage.bi.getHeight()-1; y >= 0; y--){					for (int x = 0; x <= buffImage.bi.getWidth() - 1; x++) {				Color orgColor = new Color(buffImage.bi.getRGB(x, y));				float uepsilon = (m * x + n);				float hoehenMultiplikator = (float) (uepsilon / (buffImage.bi.getHeight()));				if ((int) (hoehenMultiplikator * y) < (buffImage.bi.getHeight()*2) - 1) {//					buffImage.bi.setRGB(x, ((int) ((y) * (hoehenMultiplikator))), 		orgColor.getRGB());										buffImage.bi.setRGB(x, ((int) ((buffImage.bi.getHeight() - 1 - y) * (hoehenMultiplikator))), 		orgColor.getRGB());					buffImage.bi.setRGB(x, ((int) ((buffImage.bi.getHeight() - 1 - y) * (hoehenMultiplikator))) + 1, 	orgColor.getRGB());				}				this.update();							}						// Zeichnet das Bild Linie für Linie nach jedem Schleifen-Durchlauf//			g2d.drawImage(biUp, 0, 0, null);			// g2d.drawImage(biUp, 0, bi.getHeight(), null);//			g2d.drawImage(biUp, 8, -30, null);											} 				//		double pDistance;//		if(!check) {//			for(int x=0; x<width; x++) {//				//				if(x==width-1) {check = true;}//				newHeight = (((double)x/(double)width)*(double)(height/2))+(double)(height/2);//				pDistance = newHeight/myImage.getHeight(null);//				//				for(int y=height/2; y<height; y++) {//									//					// Farbwerte des aktuellen Pixel auslesen//					int currentPixelInt = buffImage.bi.getRGB(x, y);//					Color currentPixel  = new Color(currentPixelInt);//					//					// Rot, Grün und Blau bestimmen//					int red   = currentPixel.getRed();//					int green = currentPixel.getGreen();//					int blue  = currentPixel.getBlue();//					//					Color newPixel = new Color(red, green, blue);//					buffImage.bi.setRGB(x, (int)((height-newHeight)*pDistance), newPixel.getRGB());//					this.update();//				}//			}//		}	}		/**	 * Setzt das das Anzeigebild	 * @param img	 * @return	 */	public boolean setImage(String img) {		this.myImage = new javax.swing.ImageIcon(img).getImage();		return true;	}		/**	 * Ersetzt das Anzeigebild mit dem im Buffer gespeicherten Bild	 */	private void update() {		this.myImage = Toolkit.getDefaultToolkit().createImage(this.buffImage.bi.getSource());	}	public static void main(String[] argv) {		int delay = 10;		String imgpath = "bild.jpg";									//Pfad zum Bild		Image myImage = new javax.swing.ImageIcon(imgpath).getImage();		//temporäres Bild um Maße auszulesen		int height = myImage.getHeight(null)*2;		int width = myImage.getWidth(null);		BufferedImage bi = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); 											//Hier wird das Buffered Image erstellt		BufferedImageDrawer bid = new BufferedImageDrawer(bi,width,height);														//Der Buffered Drawer		Verzerren img = new Verzerren(imgpath, bid, height, width, delay);													//Der eigentlich Programmaufruf				// Timer für den Refresh		Timer t = new Timer();	    t.scheduleAtFixedRate(img,0,delay);  }}