Révision 0bd646e4
Ajouté par Victor PONGNIAN il y a environ 11 ans
genererPano.php | ||
---|---|---|
1 |
<?php |
|
2 |
if (isset($_GET['name'])) { |
|
3 |
// Protection de la variable GET |
|
4 |
$pano_name = htmlspecialchars($_GET['name']); |
|
5 |
$filePartArr = explode('.',$pano_name); |
|
6 |
$ext = $filePartArr[count($filePartArr) - 1]; |
|
7 |
if($ext=="tif"){ |
|
8 |
$pano_basename = basename($pano_name,".tif"); |
|
9 |
}else if($ext=="jpeg"){ |
|
10 |
$pano_basename = basename($pano_name,".jpeg"); |
|
11 |
} else { |
|
12 |
$pano_basename = basename($pano_name,".jpg"); |
|
13 |
} |
|
1 |
<!DOCTYPE html> |
|
2 |
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> |
|
3 |
<head> |
|
4 |
<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/> |
|
5 |
<link type="image/x-icon" rel="shortcut icon" href="images/tsf.png"/> |
|
6 |
<title>convertiseur image vers panorama</title> |
|
7 |
</head> |
|
14 | 8 |
|
15 |
//Partie exécutante du script gen_tiles qui gènere les tuiles à partir d'une image. |
|
16 |
$input = './to_tiles/gen_tiles.sh -p '.$pano_basename.' /var/www/data/tsf2/vpongnian/panorama/upload/'.$pano_name; |
|
17 |
$escaped_command = escapeshellcmd($input); |
|
18 |
$output = shell_exec($escaped_command); |
|
19 |
$log_file = fopen('./log/'.$pano_basename.'.log','a+'); |
|
20 |
fputs($log_file, $output); // verbose intégré dans un .log. |
|
21 |
fclose($log_file); |
|
22 |
|
|
23 |
// Ouverture d'un nouveau dossier qui contiendra toutes les tuiles. |
|
24 |
$dir = '/var/www/data/tsf2/tiles/'.$pano_basename; |
|
25 |
|
|
26 |
mkdir($dir,0777); |
|
27 |
|
|
28 |
$dir_fd = opendir('/var/www/data/tsf2/vpongnian/panorama'); |
|
9 |
<?php |
|
10 |
require 'class/utils.class.php'; |
|
11 |
utils::init(); |
|
12 |
if (isset($_GET['name'])) { |
|
13 |
$pano_name = $_GET['name']; |
|
14 |
$pano_basename = preg_replace('/\.[^.]+$/', '', $pano_name); |
|
15 |
|
|
16 |
//Partie exécutante du script gen_tiles qui gènere les tuiles à partir d'une image. |
|
17 |
$panos_dir = 'tiles'; |
|
18 |
$pano_dest = $panos_dir.'/'.$pano_basename; |
|
19 |
if (! is_dir($panos_dir)) { |
|
20 |
echo "<p class=\"error\">le répertoire \"$panos_dir\" n'est pas accessible</p>\n"; |
|
21 |
} else if (file_exists($pano_dest)) { |
|
22 |
echo "<p class=\"error\">le nom de répertoire \"$pano_dest\" est déjà pris</p>\n"; |
|
23 |
} else { |
|
24 |
mkdir($pano_dest); |
|
25 |
$escaped_command = escapeshellcmd('./to_tiles/gen_tiles.sh -p '.$pano_dest.'/'.$pano_basename.' ./upload/'.$pano_name); |
|
29 | 26 |
|
30 |
while (false !== ($image_name = readdir($dir_fd))) { |
|
31 |
// Déplacement des tuiles dans le nouveau dossier à partir de dir_fd. |
|
32 |
if(preg_match('/(.*)_[0-9]+_[0-9]+_[0-9]+\.jpg$/', $image_name, $reg)) { |
|
33 |
rename("./".$image_name, $dir."/".$image_name); |
|
34 |
} |
|
35 |
|
|
36 |
} |
|
37 |
closedir($dir_fd); |
|
38 |
header("Location: ./index.php?"); |
|
27 |
printf("<h2>Exécution de la commande :</h2>\n<p class=\"cmd\"><samp>%s</samp></p>\n<pre>", htmlspecialchars($escaped_command)); |
|
28 |
if ($fp = popen($escaped_command, 'r')) { |
|
29 |
while (!feof($fp)) { |
|
30 |
//set_time_limit (20); |
|
31 |
$results = fgets($fp, 4096); |
|
32 |
if (strlen($results) == 0) { |
|
33 |
// stop the browser timing out |
|
34 |
flush(); |
|
35 |
} else { |
|
36 |
$tok = strtok($results, "\n"); |
|
37 |
while ($tok !== false) { |
|
38 |
echo htmlspecialchars(sprintf("%s\n",$tok))."<br/>"; |
|
39 |
flush(); |
|
40 |
$tok = strtok("\n"); |
|
41 |
} |
|
39 | 42 |
} |
40 |
?> |
|
43 |
} |
|
44 |
print("</pre>\n"); |
|
45 |
if (pclose($fp) === 0) { |
|
46 |
print("<h4><span class=\"success\">Opération réussie</span></h4>\n"); |
|
47 |
printf("<p>Pour acceder directement au panorama <a href=\"panorama.php?dir=%s&panorama=%s\">cliquer ici</a></p>\n", |
|
48 |
$panos_dir, $pano_basename); |
|
49 |
} else { |
|
50 |
print("<h4><span class=\"error\">Opération en échec durant l'exécution du script !</span></h4>\n"); |
|
51 |
} |
|
52 |
} else { |
|
53 |
print("<h4><span class=\"error\">Opération en échec à l'ouverture du script !</span></h4>\n"); |
|
54 |
} |
|
55 |
} |
|
56 |
print("<p>Pour acceder à la liste des panoramas <a href=\".\">cliquer ici</a></p>\n") ; |
|
57 |
} |
|
58 |
?> |
Formats disponibles : Unified diff
remise en forme du travail de Victor Pongnian suit à son stage
Il reste pas mal de cosmétique à revoir mais le système devrait déjà être utilisable dans l'état.