Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   [Help] Сравнить изображения по размеру (php) (https://forum.antichat.xyz/showthread.php?t=114848)

draliokero 07.04.2009 15:54

[Help] Сравнить изображения по размеру (php)
 
Помогите с кодом, нужно в папке images сравнить все картинки по размеру с указанной погрешностью +- кб. и вывести название этих пар изображений т.е. вписываю в input 300 отправляю сценарию, а он ищет и сравнивает файлы.

В папке images:
Название: Развер:
dsadasv.gif 700 кб.
dasdasf.png 400 кб.
fdfdafss.gif 200 кб.
sefvxcvv.jpg 800 кб.
Результат проверки выдает название файлов: dsadasv.gif, dasdasf.png , sefvxcvv.jpg

blaga 07.04.2009 17:47

ниче не понятно. где пары? что он должен сравнивать? при каких обстоятельствах?

NOmeR1 07.04.2009 19:01

Код:

<form method="POST">
Погрешность <input type="text" name="p" value="<?=($_POST['p']!=null?htmlspecialchars($_POST['p']):"100")?>" size="5"> кб<br>
<input type="submit" value="go go go">
</form><br>
<?php
if($_POST['p'] != null) {
        $p = (int)$_POST['p'];
        $dir = 'images/';
        if (is_dir($dir)) {
                if ($dh = opendir($dir)) {
                        while (($file = readdir($dh)) !== false) {
                                $all_files[] = array($dir.$file, filesize($dir.$file));
                        }
                        closedir($dh);
                }
        }
        $o = 0;
        unset($all_files[0]);
        unset($all_files[1]);
        foreach($all_files as $i => $file1) {
                $true = false;
                foreach($all_files as $j => $file2) {
                        if($i!=$j&&abs($file1[1]-$file2[1])<=$p*1024) {
                                $array[$o][] = array($file2[0], $file2[1]);
                                $true = true;
                        }
                }
                if($true === true) {
                        $array[$o][] = array($file1[0], $file1[1]);
                        sort($array[$o++]);
                }
        }
        $sorten = array();
        foreach($array as $o => $g) {
                if(!in_array($g, $sorten, true)) $sorten[] = $g;
        }
        if(sizeof($array)>0) {
                foreach($sorten as $group) {
                        foreach($group as $file) {
                                echo $file[0].' '.round($file[1]/1024).' кб<br>';
                        }
                        echo '<hr>';
                }
        } else {
                echo 'Нет таких';
        }
}
?>



Время: 13:59