Cita:
Empezado por Neftali
Una pregunta que tal vez parezca tonta...
¿Un único pixel diferente en las imágenes, debería devolver que son diferentes? O dicho de otra manera, ¿La comparación debe omitir pequeños cambios?
Si la respuesta es que deben ser "exactas", creo que comparar pixel a pixel te será más lento que calcular un CRC o HASH del fichero y compararlos.
Si la respuesta es que no (por ejemplo en aplicaciones de detección de movimiento) los métodos de comparación siguen otras técnicas un poco diferentes.
|
Si se trata de una comparación exacta leer pixel a pixel es lento, por ello para acelerar el proceso se puede hacer mediante Scanline() y aprovechar CompareMem() y esto requiere explorar solo fila a fila. En el hilo de StackOverflow se da también esta propuesta y me parece bastante ingeniosa.
Calcular Hash o MD5 por ejemplo requiere de muchas más operaciones. Son operaciones consideradas "duras". Si ya de por si para calcular el hash o md5 se necesita leer el contenido binario, directamente que se lea la imagen y se haga el trabajo de comparar. Creo que no vale la pena emplear hash u otros, es más directo y menos lioso realizar una comparación.
Si la comparación permite ciertos cambios o aproximación entre ambas, o como en el caso de detección de movimientos, allí las cosas si se complican y hay que optar por otras soluciones como dices. El componente que ofrece la página que a puesto MAXIMUM creo que hace estos tipos de cosas.