Comparar imágenes en java

Quería saber si conocías algún comando para comparar imágenes jpg en java.
Por ejemplo
if (foto1==foto2)
System.out.println("Son iguales");
O algo similar que me ayude.

1 Respuesta

Respuesta
1
Es cierto, la primera versión que te dije no funciona, pero esta sí :) Te dejo el código por el pequeño error de la primera :)
Si necesitas que explique algo de este código me dices :)
Un saludo
try
{
boolean found = false;
String image1 = "foto1.jpg";
String image2 = "foto2.jpg";
FileReader fr1 = new FileReader ( image1 );
FileReader fr2 = new FileReader ( image2 );
while ( true )
{
int pix1 = fr1.read ( );
int pix2 = fr2.read ( );
if ( pix1 != pix2 )
{
break;
}
// pix1 y pix2 son iguales...
// si una de las dos es -1 se acabo el fichero
if ( pix1 == -1 )
{
found = true;
break;
}
}
if ( found ) System.out.println ( "Imagenes iguales" );
else System.out.println ( "Imagenes diferentes" );
}
catch (Exception e)
{
e.printStackTrace();
}
Tienes tres opciones:
Image foto1 = Toolkit.getDefaultToolkit().createImage("foto1.jpg" );
Image foto2 = Toolkit.getDefaultToolkit().createImage("foto2.jpg" );
if (foto1.equals(foto2))
{
//imagenes iguales
}
Otra opción es leer los dos ficheros de las imágenes con tu objeto Reader favorito, como el FileReader o algo así :) y almacenar el contenido de los ficheros en dos arrays de bytes (o compararlos mientras los vas leyendo byte a byte, que es más eficiente). Si todos los bytes que lees son iguales las imágenes son iguales, si no es así son diferentes :)
La otra solución es utilizar los comandos "comp" (Windows) o "diff" (Linux) de tu sistema operativo desde una llamada desde Java... pero esta para mi gusto es la opción menos elegante :)
Si no era esto lo que me pedías o si tienes cualquier otra duda ya sabes donde encontrarme :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas