ich dies mit zu vergleichen, um BufferedImageBufferedImage Vergleich seltsames Verhalten
private boolean compareImages(BufferedImage actualImage, BufferedImage expectedImage) {
for (int x = 0; x < expectedImage.getWidth(); x++) {
for (int y = 0; y < expectedImage.getHeight();y++) {
if (actualImage.getRGB(x, y) != expectedImage.getRGB(x, y)) {
return false;
}
}
}
return true;
}
Es funktioniert, wenn Bildtyp PNG, aber funktioniert nicht, wenn Bildtyp JPEG/JPG ist
Hier ist, wie Ich habe versucht, diesen Code auszuführen: -`
BufferedImage resizedImage = Scalr.resize(originalImage,50,50);
ImageIO.write(resizedImage,new File("a.jpg"));
BufferedImage bufferedImage = ImageIO.read(new File("a.jpg"));
assertTrue(compareImages(resizedImage, bufferedImage));
Dies schlägt für JPG/JPEG und es ist seltsam.
PS: Ich bin mit dieser Bibliothek ‚Scalr‘ Bildern Redimensionierung von
Wo initialisierst du 'actualImage' in' assertTrue (compareImages (actualImage, file)); '? Und 'a.jpg' funktioniert nicht, außer' a' hat ein 'String'-Feld namens' jpg'. –
Was ist der Zweck dieses Codes? Sollte es gerade Pixel für Pixel (ohne Epsilon) vergleichen? Wenn Sie zB vergleichen. jpg und png, die aus demselben Quellbild erstellt wurden, wird Ihr Code nun anzeigen, dass sie unterschiedlich sind. Ist das das gewünschte Verhalten? –
@AndyTurner gab es mehrere Tippfehler .. ich habe sie korrigiert .. – Harshil