Pracuję nad częścią aplikacji Java, która pobiera obraz jako tablicę bajtów, odczytuje go w instancji java.awt.image.BufferedImage
i przekazuje do innej biblioteki w celu przetworzenia.Czy istnieje prosty sposób porównywania wystąpień BufferedImage?
Dla testu jednostkowego chcę zrobić zdjęcie (z pliku na dysku) i stwierdzić, że jest ono równe temu samemu obrazowi, który został przetworzony przez kod.
- My spodziewać
BufferedImage
jest czytany z pliku PNG na dysku przy użyciuImageIO.read(URL)
. - Mój kod test odczytuje ten sam plik w postaci
BufferedImage
i zapisuje go do tablicy bajtów jako PNG w celu dostarczenia testowanemu systemowi.
Gdy system badanego pisze tablicę bajtów do nowego BufferedImage
chcę twierdzić, że oba obrazy są równe w znaczący sposób. Używanie equals()
(odziedziczonej po Object
) nie działa (oczywiście). Porównywanie wartości BufferedImage.toString()
również nie działa, ponieważ ciąg wyjściowy zawiera informacje o obiekcie.
Czy ktoś zna jakieś skróty? Wolałbym nie udostępniać biblioteki innej firmy do testu pojedynczej jednostki w małej części dużej aplikacji.
Czy możesz wyjaśnić, dlaczego dokładnie '.equals()' nie będzie działać? –
@JakeKing: jeśli jest dziedziczone z Object, nie będzie działać, ponieważ tylko tożsamość obiektu. – Thilo
Nie możesz po prostu porównać tablic bajtów (które zawierają PNG)? – Thilo