Bonjour, j'ai un petit soucis et j'aurais besoin de votre aide. Je dois creer un programme. Au départ, nous avons un dossier contenant plusieurs images au format PNG.L’idée principale du projet est de développer un programme, qui concatène toutes ces images en un seul sprite.Mon soucis est lors de l'execution de mon script je me retrouve avec une boucle infinie et je ne sais pas pourquoi... Pouvez vous m'aider?
Voici mon code:
Voici mon code:
<?php
function list_dir($argv)
{
$tableau2 = array();
foreach($argv as $value)
{
if(is_dir($value))
{
if ($dir = opendir($value))
{
while($file = readdir($dir))
{
$ignoreList = ['.', '..'];
//echo $file . PHP_EOL;
if($file != in_array($file, $ignoreList)
&& fnmatch("*.png", $file)
|| fnmatch("*.jpeg", $file)
|| fnmatch("*.jpg", $file)
|| fnmatch("*.tiff", $file)
|| fnmatch("*gif", $file))
{
$tableau2[] = $file;
}
}
}
}
}
closedir($dir);
$largeur_total = 0;
$hauteurmax = 0;
print_r($tableau2);
foreach ($tableau2 as $entry)
{
if(fnmatch("*.jpeg", $entry) || fnmatch("*.jpg", $entry))
{
$source = imagecreatefromjpeg($entry); // Source tableau
$dimensionsx = imagesx($source);
$dimensionsy = imagesy($source);
$largeur_total += ($dimensionsx);
if ($dimensionsy > $hauteurmax) {
$hauteurmax = $dimensionsy;
}
echo $largeur_total;
$pos = 0;
$padding = 0;
$image = imagecreatetruecolor($largeur_total, $hauteurmax); //
imagesavealpha($image, true);
$blanc = imagecolorallocate($image, 255, 255, 255);
$transparent = imagecolorallocatealpha($image, 0, 0, 0, 127); // definit l'arriere plan transparent
imagefill($image, 0, 0, $transparent);
// On met les photos dans l'image de destination (l'image de base)
imagecopymerge($image, $source, $pos, 0, 0, 0, $dimensionsx, $dimensionsy, 100);
$pos += ($padding + $hauteurmax);
imagepng($image, "essai.png"); //enregistre l'image modifiée
echo $pos . PHP_EOL;
}
}
var_dump(list_dir($argv));
}
list_dir($argv);