Comparando imagens em java

13 respostas
java
M

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??

13 Respostas

S

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
}
M

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

M

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

T

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.

M

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

S

É 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.

S

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();
}
H

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

S

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

M

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

S

int[] pixels1 = getPixels(objetoBufferedImageDaImagem1);

M

Vou Testar vlww

M

Vlwww manowww deu certooo.

Obrigadoo !!

Criado 31 de outubro de 2017
Ultima resposta 2 de nov. de 2017
Respostas 13
Participantes 4