Avatar billede etech2k Nybegynder
27. december 2005 - 01:10 Der er 6 kommentarer

Billed sammenligning

Hvordan kan jeg i java sammenligne 2 billeder for at se om de er ens ?
Avatar billede jakoba Nybegynder
27. december 2005 - 10:19 #1
Hvis du har billederne som filer kan du åbme dem som bytestreams of sammenligne byte for byte. eller udregne en checksum på dem og se om den er ens (ikke 100% sikkert, men 99,9999% sikkert er som regel godt nok).
Avatar billede etech2k Nybegynder
27. december 2005 - 11:57 #2
Okay, vil lige prøve på den måde. Hvis det virker smider jeg lige nogen point af til dig :D
Avatar billede arne_v Ekspert
27. december 2005 - 22:58 #3
hvis du vil sammenligne på et højere niveau om billedet forestiller det samme, så
er det en meget vanskelig opgave
Avatar billede etech2k Nybegynder
27. december 2005 - 23:04 #4
Billederne er 100% identiske, kunne bare godt bruge lidt kode eksempel.
Avatar billede arne_v Ekspert
27. december 2005 - 23:31 #5
lidt hurtigt sammenbikset kode:

package december;

import java.io.*;

public class FileDiff {
    public static boolean identical(String fnm1, String fnm2) throws IOException {
        long flen1 = (new File(fnm1)).length();
        long flen2 = (new File(fnm2)).length();
        if(flen1 != flen2) return false;
        InputStream is1 = new FileInputStream(fnm1);
        InputStream is2 = new FileInputStream(fnm2);
        byte[] b1 = new byte[100000];
        byte[] b2 = new byte[100000];
        for(;;) {
            int n1 = is1.read(b1);
            int n2 = is2.read(b2);
            if(n1 != n2) return false;
            if(n1 < 0) break;
            for(int i = 0; i < n1; i++) if(b1[i] != b2[i]) return false;
        }
        return true;
    }
    public static void main(String[] args) throws Exception {
        System.out.println(identical("C:\\a.jpg", "C:\\b.jpg"));
        System.out.println(identical("C:\\b.jpg", "C:\\b.jpg"));
    }
}
Avatar billede arne_v Ekspert
12. marts 2006 - 05:56 #6
Tid at få afsluttet her ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester