Comparando imagens em java

Boa Tarde!

Galera fiz o programa abaixo que o usuário coloca suas imagens através do barra de menu até ai tudo certo, agr nao consigo programar o botao calcular para comparar se a imagens sao iguais poderia me ajudar plixxx??

Obtém um array de pixels de cada uma delas e compara como método Arrays.equals

int[] pixels1 = /* obtenha os pixels da 1a imagem */;
int[] pixels2 = /* obtenha os pixels da 2a imagem */;
if (Arrays.equals(pixels1, pixels2)) {
    // as duas imagens são iguais
}
1 curtida

Entao aparece que todas as imagens sao iguais msm sendo diferente eu nao tenho q ligar a imagens ao pixels algo assim olhe o código como ficou

Segue abaixo codigo mais completo para ajudar, aparentemente n aparece nem um erro mais ao clicar no botao calcular aparece as imagens sao iguais msm as imagens sendo diferente

Ola,
no seu código, pixels1 e pixels2 são null , portanto sempre serão iguais.

Como o @staroski disse, você tem que obter os pixels de cada imagem antes de comparar.

e como faz para obter o pixels de cada imagem??

É que você atribuiu null aos pixels…
Comparando null com null, obviamente vai dizer que são iguais.

Os comentários que eu coloquei “obtenha os pixels da 1a imagem” e “obtenha os pixels da 2a imagem” era justamente para você fazer o que o comentário pede:
Obter os pixels de cada imagem e armazenar em dois arrays de pixels.
Você pode usar a classe PixelGrabber para obter um array de int correspondente aos pixels da imagem.

1 curtida

Taí, de mão beijada:

private static final Component OBSERVER = new Component() {};

private static int[] getPixels(BufferedImage image) {
	final int width = image.getWidth(OBSERVER);
	final int height = image.getHeight(OBSERVER);
	int size = width * height;
	PixelGrabber pixelGrabber = new PixelGrabber(image, 0, 0, width, height, new int[size], 0, width);
	pixelGrabber.startGrabbing();
	return (int[]) pixelGrabber.getPixels();
}
2 curtidas

Esse @staroski deveria ser o sábio do monte GUJ.

1 curtida

HaHaHa. Se eu fosse sábio, com certeza já teria mandado algumas pessoas folgadas catarem coquinho nesse fórum.
Mas gosto de tentar ajudar.

1 curtida

kkk Opa não agradeci ainda porque nao consegui sou novo nisso estou tentando ainda kkkk está dando erro eu fiz o metodo

private static final Component OBSERVER = new Component() {};

private static int[] getPixels(BufferedImage image) {
final int width = image.getWidth(OBSERVER);
final int height = image.getHeight(OBSERVER);
int size = width * height;
PixelGrabber pixelGrabber = new PixelGrabber(image, 0, 0, width, height, new int[size], 0, width);
pixelGrabber.startGrabbing();
return (int[]) pixelGrabber.getPixels();

só que o que eu coloco la no "obtenha o pixel ???

int[] pixels1 = /* obtenha os pixels da 1a imagem /;
int[] pixels2 = /
obtenha os pixels da 2a imagem */;

??? ta foda JAVA é o capeta kkkk
@staroski

int[] pixels1 = getPixels(objetoBufferedImageDaImagem1);

1 curtida

Vou Testar vlww

Vlwww manowww deu certooo.

Obrigadoo !!