Odbicie lustrzane w GUI

0

Witam. Muszę odbić lustrzanie wcześniej załadowany obraz względem jego dolnej krawędzi. Tak żeby były dwa obrazy z czego jeden odbity.

public static void main(String[] args) throws FileNotFoundException {
		
		String path ="C:/Users/Desktop/Snow.ppm";
			FileReader fReader = new FileReader(path);
		Scanner inFile = new Scanner(fReader);
	String p3=inFile.nextLine();
		String program=inFile.nextLine();
		int rows=inFile.nextInt();
		int cols=inFile.nextInt();
		int maxValue=inFile.nextInt();
		int[][] red = new int [rows][cols];
		int[][] green = new int [rows][cols];
		int[][] blue = new int [rows][cols];
		for (int c = 0; c<cols;c++){
			for(int r =0; r<rows; r++){
				red[r][c]=inFile.nextInt();
				green[r][c]=inFile.nextInt();
				blue[r][c]=inFile.nextInt();
			}
		}
		
		inFile.close();
		
		BufferedImage img = new BufferedImage(rows, cols, BufferedImage.TYPE_3BYTE_BGR);
				for (int c = 0; c<cols;c++){
					for(int r =0; r<rows; r++){
						int rgb = red[r][c];
						rgb=(rgb<<8)+green[r][c];
						rgb=(rgb<<8)+blue[r][c];
						img.setRGB(r, c, rgb);
					}
				}
		
		JLabel jLabel=new JLabel(new ImageIcon(img));
		JPanel jPanel=new JPanel();
		jPanel.add(jLabel);
		
		JFrame r = new JFrame();
		r.setSize(rows+100, cols+100);
		r.add(jPanel);	
		r.setVisible(true);
		
		
		
	}

} 

Nie mam pomysłu jak wydrukować drugi obraz odbity lustrzanie. Czy ktoś mógłby mi pomóc?

0

Jeśli się nie mylę możesz zdjęcie zapisać sobię w tablicy, a później odpowiednio je odczytywać, ale pewnie istnieje dużo łatwiejszy sposób.

0

Odbicie symetryczne ma bardzo proste równania. Użyj metody transform(AffineTransform) z klasy Graphics2D. Przykładowy kod (rysuje tylko odbity obrazek):

float[] map = {1.0f,0.0f,0.0f,-1.0f};
AffineTransform at = new AffineTransform(map);
g2.transform(at);
g2.drawImage(image,0,-HEIGHT,this);

HEIGHT to wysokość obrazka

1 użytkowników online, w tym zalogowanych: 0, gości: 1