Page 1 sur 1
Ranger des images
Posté : 17 avr. 2015, 20:31
par beckhton
Bonjour,
je dispose dans un dossier d'images classées par série (qui contient plusieurs dizaines d'images). Les images sont toute nommées toute de la sorte :
nom_de_la_serie-numero.jpg
Par exemple : foot_2013-022.jpg, pont-543.jpg, ...
je souhaiterais ranger toutes ces images dans des sous-répertoires dédiés à chaque série, il me faut donc créer en fonction des images présentes des dossiers qui portent le même nom que le nom_de_la_serie. C'est à dire par exemple les dossiers : "foot_2013" ou "pont".
C'ets là que le bas blesse je viens de découvrir la POO et je m'interroge face à un tel projet. Plusieurs questions :
faut-il utiliser l'upload ? La fonction mkdir() pour créer des dossiers ?
Je ne veux pas un code tout prêt j'insiste mais juste des pistes pour me permettra d'appréhender cette tache.
Merci d'avance pour votre aide que j'espère généreuse.
Re: Ranger des images
Posté : 17 avr. 2015, 20:33
par tof73
mkdir glob et rename
Re: Ranger des images
Posté : 17 avr. 2015, 20:35
par beckhton
Merci pour cette réponse rapide mais quel est le sens de glob ?
Et à quel moment faire intervenir rename ?
Re: Ranger des images
Posté : 17 avr. 2015, 20:51
par Saian
Pas besoin de faire de programmation orienté objet pour ce script.
Un simple algorithme suffit :
- lecture du répertoire des images (opendir, readdir, closedir)
- pour chaque image extraction du nom de la série (au choix, preg_match, explode, substr, ...)
- test de l’existence du répertoire de destination et création s'il n'existe pas (is_dir, mkdir)
- déplacement du fichier dans le répertoire (rename)
Fais quand même un backup de tes images avant de mettre le bazar dedans. ^^
Tu pourras t'en débarrasser quand tu seras sur de ton script.
Re: Ranger des images
Posté : 17 avr. 2015, 23:04
par beckhton
Voilà un code qui marche ! Mais je souhaiterais l'optimiser au maximum.
<?php
class Image
{
public function getImages($image_dir)
{
if($handle = opendir($image_dir))
{
while(false !== ($entry = readdir($handle)))
{
if(($entry != '.') and ($entry != '..') and ($entry != '.DS_Store'))
{
$images[] = $entry;
}
}
}
closedir($handle);
return $images;
}
}
$image_dir = '/Applications/MAMP/htdocs/projet_image/vrac/';
$avions = '/Applications/MAMP/htdocs/projet_image/photos/avions/';
$montagne = '/Applications/MAMP/htdocs/projet_image/photos/montagne_2009/';
$photos = '/Applications/MAMP/htdocs/projet_image/photos/';
$image = new Image();
$images = $image->getImages($image_dir);
if(!is_dir($photos))
{
mkdir($photos);
}
foreach($images as $key => $name)
{
$explode = explode('-',$name);
if($explode[0] == 'avions')
{
if(!is_dir($avions))
{
mkdir($avions);
rename($image_dir.$name,$avions.$name);
}
else
{
rename($image_dir.$name,$avions.$name);
}
}
elseif($explode[0] == 'montagne_2009')
{
if(!is_dir($montagne))
{
mkdir($montagne);
rename($image_dir.$name,$montagne.$name);
}
else
{
rename($image_dir.$name,$montagne.$name);
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>PREMIERS PAS AVEC BRACKETS</title>
<meta name="description" content="An interactive getting started guide for Brackets.">
<link rel="stylesheet" href="main.css">
</head>
<body>
<h1> Rangement d'images </h1>
<?php
$image = new Image();
$images_avion = $image -> getImages($avions);
$images_montagne = $image -> getImages($montagne);
echo '<h2>Liste des photos d\'avions</h2><ul>' ;
foreach($images_avion as $id => $avion)
{
echo '<li>' .$avion. '</li>';
}
?>
</ul>
<?php
echo '<h2>Liste des photos de montagne_2009 </h2><ul>' ;
foreach($images_montagne as $id => $montagne)
{
echo '<li>' .$montagne. '</li>';
}
?>
</ul>
</body>
</html>