Java-Comment comparer des fichiers image en binaire

Comparaison des fichiers image

Fichier source de comparaison

Le matériel a été emprunté à PhotoAC. Image originale: Femme avec PC woman_1.jpg

Comparaison avec le fichier copié (True)

Un fichier qui n'est qu'une copie du fichier source de la copie. Puisqu'il n'y a aucune différence dans les données binaires, le résultat de la comparaison est supposé être vrai. woman_1_copy.jpg

Modifiez légèrement le fichier source de comparaison et comparez (Faux)

Une version légèrement modifiée du fichier source après l'avoir copié. Le petit point noir sur le côté droit de la face est la partie éditée. Depuis qu'il a été modifié, le résultat de la comparaison est supposé être faux. woman_1_edit.jpg

Comparaison avec un autre fichier (Faux)

Puisqu'il s'agit d'un fichier complètement différent, le résultat de la comparaison est supposé être False. woman_2.jpg

Pour les fichiers inexistants (Faux)

Spécifiez un nom de fichier qui n'existe pas. Supposé être intercepté par IOException.

Code source

Les fichiers image sont stockés dans le dossier «fichiers» sur le bureau.

Main.java


package samples.compare;

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

        //Fichier à comparer
        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 ";

        //Génération d'instance
        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);

        //Afficher les résultats de la comparaison
        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("Impossible de lire le fichier.");
        }
        return false;
    }
}

Résultat d'exécution

Comme prévu, tout sauf les fichiers copiés est Flase. En outre, si vous spécifiez un nom de fichier qui n'existe pas, une IOException a été levée.

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)
 Impossible de lire le fichier.
woman_1 compare to errer : false

référence

Qiita Comment déterminer si le contenu du fichier correspond (Java)

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 "> Femme avec 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 "> Femme utilisant un PC

Recommended Posts

Java-Comment comparer des fichiers image en binaire
Lire des fichiers binaires en Java 1
Android-Télécharger des fichiers image vers Azure Blob Storage en Java
Lire des fichiers binaires dans Java 2
Convertir des fichiers SVG en fichiers PNG en Java
[Rails] Différentes manières d'écrire dans des fichiers de départ
Comment mettre à jour un fichier prédéfini dans un conteneur Docker
Exemple de déploiement pour lancer une image ubuntu dans Kubernetes
Comment rendre une image partiellement transparente avec le traitement
Conversion du fichier TSV en fichier CSV (avec BOM) en Ruby
Introduisez RMagick pour convertir les fichiers image existants dans un autre format
Comment gérer les fichiers TSV et les fichiers CSV dans Ruby
[Rails 6] Comment définir une image d'arrière-plan dans Rails [CSS]
Comment mettre en évidence la syntaxe d'un fichier comme Dockerfile.production avec Pycharm
[Rails] Comment afficher les images dans la vue
Ajouter un fichier au fichier jar
Introduction aux fichiers JAR
Pour déboguer avec Eclipse
Comparer des listes en Java