Gibt es eine einfache Möglichkeit zu vergleichen BufferedImage-Instanzen?

Arbeite ich an Teil einer Java-Anwendung, die nimmt ein Bild als byte-array aus, liest es in einem java.awt.image.BufferedImage Instanz und übergibt Sie an eine Drittanbieter-Bibliothek für die Verarbeitung.

Für einen unit-test, möchte ich ein Bild (aus einer Datei auf der Festplatte) und behaupten, dass es ist, gleich dem Bild, dass bearbeitet wurde, der code.

  • Meine erwartet BufferedImage gelesen wird aus einer PNG-Datei auf der Festplatte mithilfe ImageIO.read(URL).
  • Meine test code liest die gleiche Datei in ein BufferedImage und schreibt, dass ein byte-array als PNG zur Verfügung zu stellen, das system under test.

Wenn das system unter test schreibt das byte-array zu einem neuen BufferedImage ich möchte behaupten, dass die beiden Bilder gleich sind, in einer sinnvollen Art und Weise. Mit equals() (geerbt von Object) nicht funktioniert (natürlich). Vergleichen BufferedImage.toString() Werte auch nicht funktioniert, da der Ausgabe-string enthält die Objekt-Referenz Informationen.

Weiß jemand irgendwelche Tastenkombinationen? Ich würde es vorziehen, nicht, um in einer Drittanbieter-Bibliothek für eine einzelne unit test in einem kleinen Teil einer großen Anwendung.

Könnten Sie erklären, warum genau .equals() funktioniert nicht?
wenn es geerbt von Objekt, es wird nicht funktionieren, weil das tut nur Objekt-Identität.
können Sie vergleichen Sie einfach die byte-arrays (mit PNG)?
BufferedImage nicht überschreiben Object#equals(). docjar.com/html/api/java/awt/image/BufferedImage.java.html
Hab es, danke.

InformationsquelleAutor pharsicle | 2012-06-12

Schreibe einen Kommentar