provera duplikata fajlova
Treba da sprecim da se 2 iste slike uploaduju, pa trazim sto efikasniji nacin za to.
Da li se crc32 moze pouzdano koristiti za detekciju duplikata? On je pre svega predvidjen za detekciju gresaka, i cuo sam da on ima mnogo vecu sansu za koliziju kljuceva(da sve razlicite vrednosti daju isti hash) od npr. md5, ali je i dosta brzi. Posto se radi o slikama od po 7-10MB performanse nisu zanemarljiva stvar, ali me brine da se ne desi da u nekom trenutku dve razlicite slike imaju isti "potpis" ? Kolike su tacno sanse za koliziju i da li treba brinuti o tome sa nekih 300K slika u bazi? |
Ja bih pre probao da procitam exif podatke (npr timestamp snimka i model kamere koji je koriscen), mada ne znam sa kakvim slikama baratas, tj. da li je exif available.
|
Pokusaj da imenujes slike tako da nikad ne dodju u koliziju. Mozda jedna od varijanti da ti bude da u njihovo ime dodajes datum do milisekunde ili da ih u potpunosti zamjenis sa datumom. U bazi drzi njihov opis koji ces smjesti u alt="" i to bi bilo dovoljno.
U nekim aplikacijam gdje se unose vece kolicine slika koristio sam takvan nacina upisa i nikad nije doslo do dupliranja. Isao sam i krak dalje te sam prema datumu radio i sistem foldera u koje sam unosio slike. Kasnije mi je to pomoglo da lakse radim arhiviranje. Laksa je automatizacija jer postoji neka logika bez potrebe da citam vrijeme upisa ili modifikacije slike. Ako dodje do pogreske pri unosu lako je zamjeniti sliku pod istim imenom. Ovakav ili slican nacin imenovanja slika primjetio sam da koriste neke aplikacije koje dnevno primaju vise hiljada slika. |
Kako CRC32 ima 2^32 kombinacija, šansa da ti dve od 300K slika upadne u istu klasu (da daju isti CRC a da su zaista različite) je oko 0.007 %
Ja bih išao na MD5 |
@dinke: teoretski bih mogao da gledam ime fotografa i vreme, sto nije losa ideja.. a mozda postoji i neki ID kamere u Exif-u, odnosno IPTC... istrazicu..
@zlukic: nije problem u imenovanju, problem je da neko ne uploaduje istu sliku 2 puta @dejan: mislim da to ne mozes tako da racunas, jer tu se primenjuje onaj birthday paradox, a i nije idealna hash funkcija u pitanju (da pokrije svih 2^32 kombinacija) Anyhow, znaci md5() za sad, i meni se cini... a i Dinketov predlog je odlican... |
MD5 bi bio ok. Samo je pitanje je koliko ce ti hash pomoci kada su slike u pitanju, jer je dovoljno da slika bude u drugom formatu, optimizovana ili u malo drugacijoj rezoluciji i tebi ce izgledati da su razlicite, iako su prakticno "iste".
Pretpostavljam da je jedini nacin da se u vecini slucajeva obezbijedis od duplikata upotreba nekog liba za poredjenje slika po slicnosti (piksela). |
Možeš da probaš sa sledećim trikom: porediš ovim redosledom:
* Veličina fajla * MD5 poslednjih n bajtova fajla (tipa 16k), ovo bi trebalo da ide brzo. Pa tek ako su oba ova broja ista, radiš MD5 celih fajlova. |
Imas nekoliko image hashing resenja koja podrzavaju i perceptualno poredjenje,
npr: http://www.phash.org/ |
md5, imam bazu od ~400.000 slika i za sad ni jedan problem ... Dejan rece da je sansa 0.007% ... veca je sansa da meteor pogodi server ...
|
@zidoo: za md5 nije frka, sanse za koliziju sa minimalne, samo je on malo sporiji i zahtevniji, zato sam mislio da mozda koristim neki drugi...
@McKracken: thanks za ovo, pogledacu @zira: svestan sam toga, ali to mi nije toliki problem, ovo je arhiva za profi fotografe i samo je bitno da neko greskom ne uveze iste slike 2 puta, a ako bude nekih izmena (tipa editori vrate sliku na doradu) to ionako tretiraju kao potpuno novu sliku, tako da me to ne pogadja. @jablan: hmmm, mudro zboris :) |
Vreme je GMT +2. Trenutno vreme je 07:07. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.