Existe-t-il un moyen simple de comparer les instances BufferedImage?

Je suis en train de travailler sur une partie d'une application Java qui prend une image comme un tableau d'octets, lit dans un java.awt.image.BufferedImage instance et le passe à un tiers bibliothèque pour le traitement.

Pour une unité de test, je veux prendre une image (à partir d'un fichier sur le disque) et affirmer que c'est la même image qui a été traitée par le code.

  • Mon devrait BufferedImage est lu à partir d'un fichier PNG sur le disque à l'aide de ImageIO.read(URL).
  • Mon test code lit le même fichier dans un BufferedImage et écrit sur un tableau d'octets en tant que fichiers PNG à fournir au système sous test.

Lorsque le système sous test écrit le tableau d'octets pour une nouvelle BufferedImage je tiens à affirmer que les deux images sont identiques dans une manière significative. À l'aide de equals() (héritée de Object) ne fonctionne pas (bien sûr). En comparant BufferedImage.toString() valeurs aussi ne fonctionne pas parce que la chaîne de sortie comprend la référence d'objet d'information.

Quelqu'un sait tous les raccourcis? Je préfère ne pas apporter à un tiers de la bibliothèque pour une seule unité de test dans une petite partie d'une grande application.

source d'informationauteur pharsicle