espenhar imagem em java

Boas

Estou aqui com um problema num programa pa espelhar uma imagem no java, que isto so ta a espelhar metade da imagem!

Código:
[SIZE=2]public class pixeis{[/SIZE]
[SIZE=2]public static void main (String[]args){[/SIZE]
[SIZE=2]Picture img = new Picture("E:\\fac\\Iti\\trabalho 2 iti\\coracao_azul.jpg");[/SIZE]
[SIZE=2]int colNum = img.getWidth();[/SIZE]
[SIZE=2]int linNum = img.getHeight();[/SIZE]
[SIZE=2]int a = colNum;[/SIZE]
[SIZE=2]int b = linNum;[/SIZE]
 
[SIZE=2]for (int c=0;c<colNum;c++){[/SIZE]
[SIZE=2]for (int l=0;l<linNum;l++){[/SIZE]
[SIZE=2]Pixel thisP = img.getPixel(c,l);[/SIZE]
 
[SIZE=2]img.getPixel(a-c-1,b-l-1).setRed(img.getPixel(c,l).getRed());[/SIZE]
[SIZE=2]img.getPixel(a-c-1,b-l-1).setGreen(img.getPixel(c,l).getGreen());[/SIZE]
[SIZE=2]img.getPixel(a-c-1,b-l-1).setBlue(img.getPixel(c,l).getBlue());[/SIZE]
[SIZE=2]}[/SIZE]
[SIZE=2]}[/SIZE]
 
 
 
[SIZE=2]img.explore();[/SIZE]
[SIZE=2]}[/SIZE]
[SIZE=2]}[/SIZE]
Nao consigo descobrir onde esta o problema se alguem o avistar avise :cool: obrigado
 
Última edição pelo moderador:
Não percebo nada de Java (ainda), mas pelo que li no teu código, o que se passa, numa linha de pixels é
1 2 3 4 5 6 7 8 9 <-- início
1 2 3 4 5 6 7 8 1
1 2 3 4 5 6 7 2 1
1 2 3 4 5 6 3 2 1
1 2 3 4 5 4 3 2 1
1 2 3 4 5 4 3 2 1
1 2 3 4 5 4 3 2 1
1 2 3 4 5 4 3 2 1
1 2 3 4 5 4 3 2 1
1 2 3 4 5 4 3 2 1 <-- fim
A negrito o resultado final naquela posição; a vermelho a posição onde ele foi buscar o R, G e B. Ele pega numa posição (a vermelho) e substitui outra (a negrito) por essa. Posso ter confundido o que está a negrito ou vermelho, mas o resultado final é o mesmo.

O que quero dizer, é que estás a pensar mal no algoritmo. Devias trocar as duas posições e executar o algoritmo até metade do comprimento da imagem.
1 2 3 4 5 6 7 8 9 <-- início
9 2 3 4 5 6 7 8 1 <-- trocar a primeira posição com a última
9 8 3 4 5 6 7 2 1 <-- trocar a segunda posição com a penúltima
9 8 7 4 5 6 3 2 1 e assim por diante
9 8 7 6 5 4 3 2 1
9 8 7 6 5 4 3 2 1 <-- caso de paragem: chegamos a meio

Precisas de uma variável temporária que armazene o valor do pixel que vais modificar, depois fazer com que esse pixel tenha as cores correspondentes do pixel do lado oposto, e o passo que te falta: trocar o pixel do lado oposto pela variável temporária que tem o valor do pixel inicial.

Fiz-me entender?
 
Última edição:
Back
Topo