Скрипт переименования картинок

Тема в разделе "PHP", создана пользователем Ozz99, 31 янв 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Ozz99

    Ozz99

    Регистр.:
    15 май 2009
    Сообщения:
    201
    Симпатии:
    168
    Есть две папки картинок в одной картинки выглядят так

    as.jpg sfsad.jpg asdf.jpg asfas.jpg fgsdf.jpg

    Во второй вот так

    1.jpg 2.jpg апр.jpg zxc.jpg 8.jpg

    Надо что бы во второй папке картинки именовались точно так как в первой. Есть такой скрипт? Или это можно решить в какой нибудь программе?
     
  2. krenkus

    krenkus Создатель

    Регистр.:
    10 мар 2008
    Сообщения:
    37
    Симпатии:
    4
    Ничего не понял - какова связь между картинками в разных папках? Или просто от балды?
    Вообщето элементарная задача для пхп (в обоих случаях) - см. функцию rename()
     
  3. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    991
    Симпатии:
    267
    Если сможете соответствие между файлами в первой папке и во второй составить, то набрасать скрипт переименование можно без проблем.
     
  4. drawing4

    drawing4

    Регистр.:
    21 ноя 2008
    Сообщения:
    323
    Симпатии:
    37
    Если файлы идентичны но у них разные названия то чтобы сделать названия одинаковыми можно попробовать сравнивать md5.
    Какая вообще связь между этими файлами?
     
  5. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    А как вы будете проверять идентичность? По размеру файла? А если 2 разные картинки весят одинаково? Или будете подгружать каждую и попиксельно сравнивать?
     
  6. sultan347

    sultan347

    Регистр.:
    25 апр 2009
    Сообщения:
    230
    Симпатии:
    7
    md5 же будет разными у разных картинок?
     
  7. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    PHP:
    $dir1 './images1';
    $dir2 '/path/to/dir2'

    $img1 $img2 = array();

    $h opendir($dir1);
    while(
    $f readdir($h)) if ($f[0] != '.') {
      
    $img1[] = array("$dir1/$f"md5_file("$dir1/$f"));
    }
    $h opendir($dir2);
    while(
    $f readdir($h)) if ($f[0] != '.') {
      
    $img2[] = array("$dir2/$f"md5_file("$dir2/$f"));
    }

    foreach(
    $img1 as $seek) {
      foreach(
    $img2 as $repl) {
         if (
    $seek[1] == $repl[1]) {
             
    rename("$dir2/$repl[0]""$dir1/$seek[0]");
         }
      }
    }

     
  8. drawing4

    drawing4

    Регистр.:
    21 ноя 2008
    Сообщения:
    323
    Симпатии:
    37
    Впринципе маловероятно что две картинки весят одинаково с точностью до байта.

    Правда если у них размер небольшой тогда эта вероятность сильно увеличивается.

    Добавлено через 1 минуту
    Если нужно просто переименовать по списку файлы. Вне зависимости от их содержания, то смотрел что подобная опция есть в тотале, там где групповое переименование. Правда не проверял эту возможность
     
  9. Ozz99

    Ozz99

    Регистр.:
    15 май 2009
    Сообщения:
    201
    Симпатии:
    168
    Если нужно просто переименовать по списку файлы. Вне зависимости от их содержания, то смотрел что подобная опция есть в тотале, там где групповое переименование. Правда не проверял эту возможность

    Точно так и надо. Просто что бы одни файлы стали с другим названием независимо от содержания. Связи между папками нет.
     
  10. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    PHP:
    $dir1 '/path/to/dir1';
    $dir2 '/path/to/dir2'

    $arr = array();
    $h opendir($dir1);
    while(
    $f readdir($h)) if (is_file("$dir1/$f")) $arr[] = "$dir1/$f";

    $i=0;
    $h opendir($dir2); 
    while(
    $f readdir($h)) if (is_file("$dir2/$f")) {
          
    rename("$dir2/$f""$dir2/".$arr[$i++]);
    }
     
Статус темы:
Закрыта.