Estoy trabajando en una aplicación Java que toma una imagen como una matriz de bytes, la lee en una instancia java.awt.image.BufferedImage
y la pasa a una biblioteca de terceros para su procesamiento.¿Existe una manera simple de comparar instancias de BufferedImage?
Para una prueba de unidad, quiero tomar una imagen (de un archivo en el disco) y afirmar que es igual a la misma imagen que ha sido procesada por el código.
- Mi espera
BufferedImage
se lee de un archivo PNG en el disco utilizandoImageIO.read(URL)
. - Mi prueba código lee el mismo archivo en un
BufferedImage
y lo escribe en una matriz de bytes como PNG para proporcionar al sistema bajo prueba.
Cuando el sistema bajo prueba escribe el conjunto de bytes en un nuevo BufferedImage
, deseo afirmar que las dos imágenes son iguales de manera significativa. Usar equals()
(heredado de Object
) no funciona (por supuesto). La comparación de los valores BufferedImage.toString()
tampoco funciona porque la cadena de salida incluye información de referencia del objeto.
¿Alguien sabe algún atajo? Preferiría no traer una biblioteca de terceros para una prueba de unidad única en una pequeña parte de una aplicación grande.
¿Podría explicar por qué exactamente '.equals()' no funcionará? –
@JakeKing: si se hereda de Object, no funcionará porque eso solo hace la identidad del objeto. – Thilo
¿no puedes simplemente comparar las matrices de bytes (que contienen el PNG)? – Thilo