[Help] Сравнить изображения по размеру (php)

Discussion in 'PHP' started by draliokero, 7 Apr 2009.

  1. draliokero

    draliokero Member

    Joined:
    14 Mar 2009
    Messages:
    83
    Likes Received:
    6
    Reputations:
    0
    Помогите с кодом, нужно в папке images сравнить все картинки по размеру с указанной погрешностью +- кб. и вывести название этих пар изображений т.е. вписываю в input 300 отправляю сценарию, а он ищет и сравнивает файлы.

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

    blaga Elder - Старейшина

    Joined:
    23 Mar 2006
    Messages:
    884
    Likes Received:
    273
    Reputations:
    106
    ниче не понятно. где пары? что он должен сравнивать? при каких обстоятельствах?
     
  3. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    Code:
    <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 'Нет таких';
    	}
    }
    ?>
     
    1 person likes this.