Java-How zum Vergleichen von Bilddateien in Binärform

Vergleich von Bilddateien

Vergleichsquelldatei

Das Material wurde von PhotoAC ausgeliehen. Originalbild: Frau mit PC woman_1.jpg

Vergleich mit kopierter Datei (True)

Eine Datei, die nur eine Kopie der Kopierquelldatei ist. Da es keinen Unterschied in den Binärdaten gibt, wird angenommen, dass das Vergleichsergebnis wahr ist. woman_1_copy.jpg

Bearbeiten Sie die Vergleichsquelldatei leicht und vergleichen Sie (False)

Eine leicht bearbeitete Version der Quelldatei nach dem Kopieren. Der kleine schwarze Punkt auf der rechten Seite des Gesichts ist der bearbeitete Teil. Da es bearbeitet wurde, wird das Vergleichsergebnis als falsch angenommen. woman_1_edit.jpg

Vergleich mit einer anderen Datei (False)

Da es sich um eine völlig andere Datei handelt, wird das Vergleichsergebnis als falsch angenommen. woman_2.jpg

Für nicht vorhandene Dateien (False)

Geben Sie einen Dateinamen an, der nicht vorhanden ist. Wird vermutlich von IOException abgefangen.

Quellcode

Bilddateien werden im Ordner "files" auf dem Desktop gespeichert.

Main.java


package samples.compare;

public class Main {
    public static void main(String...strings) {
        //Vergleichsquelldatei
        String woman_1 = "C:\\\\Users\\user\\Desktop\\files\\woman_1.jpg ";

        //Zu vergleichende Datei
        String woman_1_copy = "C:\\\\Users\\user\\Desktop\\files\\woman_1_copy.jpg ";
        String woman_1_edit = "C:\\\\Users\\user\\Desktop\\files\\woman_1_edit.jpg ";
        String woman_2 = "C:\\\\Users\\user\\Desktop\\files\\woman_2.jpg ";
        String errer = "C:\\\\Users\\user\\Desktop\\files\\errer.jpg ";

        //Instanzgenerierung
        FileCompare fc_copy = new FileCompare(woman_1, woman_1_copy);
        FileCompare fc_edit = new FileCompare(woman_1, woman_1_edit);
        FileCompare fc_2 = new FileCompare(woman_1, woman_2);
        FileCompare fc_errer = new FileCompare(woman_1, errer);

        //Vergleichsergebnisse anzeigen
        System.out.println("woman_1 compare to woman_1_copy : " + fc_copy.fileCompare() );
        System.out.println("woman_1 compare to woman_1_edit : " + fc_edit.fileCompare() );
        System.out.println("woman_1 compare to woman_2 : " + fc_2.fileCompare() );
        System.out.println("woman_1 compare to errer : " + fc_errer.fileCompare() );
    }
}

FileCompare.java


package samples.compare;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;

public class FileCompare {
    private String source;
    private String destination;

    public FileCompare(String source, String destination) {
        this.source = source ;
        this.destination = destination;
    }

    public boolean fileCompare() {
        try {
            return Arrays.equals(Files.readAllBytes(Paths.get(source)), Files.readAllBytes(Paths.get(destination)));
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("Fehler beim Lesen der Datei.");
        }
        return false;
    }
}

Ausführungsergebnis

Wie erwartet ist alles außer den kopierten Dateien Flase. Wenn Sie einen Dateinamen angeben, der nicht vorhanden ist, wurde eine IOException ausgelöst.

woman_1 compare to woman_1_copy : true
woman_1 compare to woman_1_edit : false
woman_1 compare to woman_2 : false
java.nio.file.NoSuchFileException: C:\Users\user\Desktop\files\errer.jpg
	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(Unknown Source)
	at java.nio.file.Files.newByteChannel(Unknown Source)
	at java.nio.file.Files.newByteChannel(Unknown Source)
	at java.nio.file.Files.readAllBytes(Unknown Source)
	at samples.compare.FileCompare.fileCompare(FileCompare.java:19)
	at samples.compare.Main.main(Main.java:21)
 Fehler beim Lesen der Datei.
woman_1 compare to errer : false

Referenz

Qiita Feststellen, ob der Dateiinhalt mit Java übereinstimmt

PhotoAC <a href = "https://www.photo-ac.com/main/detail/3302344?title=PC%E3%82%92%E6%8C%81%E3%81%A4%E5%A5%B3 % E6% 80% A7 "rel =" noopener noreferrer "target =" _ blank "> Frau mit PC <a href = "https://www.photo-ac.com/main/detail/3411890?title=PC%E3%82%92%E6%93%8D%E4%BD%9C%E3%81%99 % E3% 82% 8B% E5% A5% B3% E6% 80% A7 "rel =" noopener noreferrer "target =" _ blank "> Frau, die einen PC bedient

Recommended Posts

Java-How zum Vergleichen von Bilddateien in Binärform
Lesen Sie Binärdateien in Java 1
Android-Laden Sie Bilddateien in den Azure Blob-Speicher in Java hoch
Lesen Sie Binärdateien in Java 2
Konvertieren Sie SVG-Dateien in Java in PNG-Dateien
[Rails] Verschiedene Möglichkeiten zum Schreiben in Seed-Dateien
So aktualisieren Sie eine vorgefertigte Datei in einem Docker-Container
Bereitstellungsbeispiel zum Starten des Ubuntu-Images in Kubernetes
So machen Sie ein Bild mit Processing teilweise transparent
Konvertieren von TSV-Dateien in CSV-Dateien (mit Stückliste) in Ruby
Führen Sie RMagick ein, um vorhandene Bilddateien in ein anderes Format zu konvertieren
Umgang mit TSV-Dateien und CSV-Dateien in Ruby
[Rails 6] So legen Sie ein Hintergrundbild in Rails [CSS] fest
Syntaxen Markieren Sie eine Datei wie Dockerfile.production mit Pycharm
[Schienen] So zeigen Sie Bilder in der Ansicht an
Datei zur JAR-Datei hinzufügen
Einführung in JAR-Dateien
Debuggen mit Eclipse
Listen in Java vergleichen