Page 1 of 1
Bilder vergleichen
Posted: 2003-05-16 10:46
by zakmc
Hallo,
ich wollte mir ein Programm schreiben, daß meine Urlaubsfotos verwaltet. Die Digitalkamera nennt die Bilder immer gleich, wenn ich sie von der Kamera lösche. Ich ahbe mir 2 Ordner gemacht ein neu ein fertig. Ich lese das Verzeichnis neu ein und benenne dann die Bidler um und kopiere Sie in den fertig Ordner. Ich möchte sehr gerne vermeiden, daß dort Doppelte Bilder erstellt werden. Kann man irgendwie prüfen,ob das Bild schon vorhanden ist? Nicht den Namen des Bildes sondern quasi den Inhalt.
Re: Bilder vergleichen
Posted: 2003-05-16 14:23
by thomi
zakmc wrote:Kann man irgendwie prüfen,ob das Bild schon vorhanden ist? Nicht den Namen des Bildes sondern quasi den Inhalt.
Ich nehme mal an, du meinst einen Vergleich auf exakt dasselbe Bild? Da du nix zur Programmiersprache geschrieben hast, hier die Lösung auf der Shell:
Sind die Dateien gleich, erscheint keine Ausgabe, sonst eine entsprechende Meldung.
Re: Bilder vergleichen
Posted: 2003-05-21 17:02
by zakmc
wollte das eigentlich mit php machen aber shell geht genauso gut. kann ja einen systemaufruf amchen
thx
Re: Bilder vergleichen
Posted: 2003-05-21 17:45
by gamecrash
Hm, unter php hilft Dir evtl. die Funktion md5_file() weiter... ich glaub die vergleicht nur den Inhalt. Und wenn Du die zwei Hashwerte der zwei Dateien vergleichst und die gleich sind, sind die Bilder auch gleich.
Naja, also probiert hab ich's nicht, musste n bissel mit experimentieren.
Re: Bilder vergleichen
Posted: 2003-05-21 19:22
by zakmc
das werde ich auf jeden fall probieren. thx
wenn das funktioniert wäre das auch noch besser als das erste
Re: Bilder vergleichen
Posted: 2003-05-21 22:35
by zakmc
habe es hinbekommen
vielen dank euch beiden
Re: Bilder vergleichen
Posted: 2003-05-22 08:49
by thorsten
Fürs Archiv wäre dein Codeschnipsel nicht schlecht 8)
Re: Bilder vergleichen
Posted: 2003-05-22 23:45
by zakmc
kein Problem. habe Kommentare eingefügt und hoffe das es daruch verständlich wird, ansonsten einfach hier posten oder ne pm
Code: Select all
include_once("function/mydb_connect.php"); //PHP Function um die Verbindung zur DB herzustellen
$connid=connect_to_mydb(); //DB Verbindung aufbauen
$read_dir="neu"; //Name des einzulesenden Verzeichnisses
$write_dir="bilder"; //Name des Verzeichnis wo das Bild gespeichert werden soll
$fp_v=opendir($read_dir); //Ã?ffnen eines Verzeichnis, gibt Verzeichnis-Handler zurück
while($datei=readdir($fp_v)) { //Gesamtinhalt des Verzeichnisses einlesen
if(is_dir("$read_dir/$datei")) //prüfen, ob es sich um ein Verzeichnis, parent directory oder upper directory handelt
continue; //sprung zum while
$fp_r=fopen("$read_dir/$datei","r"); //Bild zum lesen öffnen
$string=fread($fp_r,filesize("$read_dir/$datei")); //Bild einlesen
fclose($fp_r); //Offne Datei schließen
$hash=md5($string); //Hashwert des String ermitteln
if(mysql_num_rows(mysql_query("SELECT bildid FROM bild WHERE hash='$hash'"))>0) //prüfen, ob hash schon in DB
continue; //sprung zum while
mysql_query("INSERT INTO bild SET hash='$hash'"); //Hashwert in DB speichern
$imgname=mysql_insert_id().".jpg"; //neuen Namen für das Bild erstellen, damit der Name eindeutig wird
$fp_w=fopen("$write_dir/$imgname","w"); //Datei zum schreiben öffnen
fwrite($fp_w,$string); //Bild schreiben
fclose($fp_w); //Datei schließen
unlink("$read_dir/$datei"); //Bild löschen
}
closedir($fp_v); //Verzeichnis schließen
Re: Bilder vergleichen
Posted: 2003-05-24 09:01
by jtb
falls deine DigiCam Exif unterstützt, würde ich nur diese Header vergleichen - könnte ein bißchen schneller sein..
Re: Bilder vergleichen
Posted: 2003-05-24 11:22
by zakmc
Mmmhhhh also im Handbuch steht nichts davon ..
was istd as denn überhaupt?
Re: Bilder vergleichen
Posted: 2003-05-24 11:23
by jtb
Re: Bilder vergleichen
Posted: 2003-05-24 11:37
by zakmc
Das werde ich heute oder morgen Abend gleich mal ausprobieren.
THX