C'è un modo per controllare le immagini duplicate con nomi diversi usando php? Voglio eliminare tutti i duplicati.C'è un modo per controllare le immagini duplicate con nomi diversi usando php?
risposta
Sì, si potrebbe iterare su tutti i file e utilizzare la funzione hash_file per confrontarli: http://php.net/manual/en/function.hash-file.php
suppongo che una soluzione un po 'semplice sarebbe quella di fare un checksum sulle immagini utilizzando md5()
.
Aprire una directory, scorrere i file che generano md5, confrontare md5, eliminare duplicati.
EDIT: Ecco uno script utilizzando hash_file()
<?php
$dir = "/full/path/to/images";
$checksums = array();
if ($h = opendir($dir)) {
while (($file = readdir($h)) !== false) {
// skip directories
if(is_dir($_="{$dir}/{$file}")) continue;
$hash = hash_file('md5', $_);
// delete duplicate
if (in_array($hash, $checksums)) {
unlink($_);
}
// add hash to list
else {
$checksums[] = $hash;
}
}
closedir($h);
}
funzionerà, se vengono apportate modifiche all'immagine? come una filigrana aggiunta o qualcosa del genere? grazie – AMB
solo i file che sono duplicati esatti di un altro verrebbero eliminati –
È possibile confrontare e controllarlo da sha1_file hash di un file
Restituisce 40 carattere numero esadecimale
+1 per l'utilizzo di una funzione che (molto probabilmente/si spera) non carichi l'intero contenuto del file in una stringa. – ThiefMaster
Mostra un errore quando si controlla con i file in GB – saravanabawa