Concatener images, sprite..imagecreatetruecolor..
Posté : 08 déc. 2021, 21:40
Bonjour ,
J'ai comme consigne :
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.
Le problème c'est que je n'arrive pas à donner comme dimensions à "imagecreatetruecolor" la taille que j'aimerais lui donner.
En gros s'il y a 60 images dans le dossier images, je voudrais que les dimensions soient celles de toutes les images en une seule.
Je sais pas si c'est faisable ou si mon code est à côté de la plaque.
voici mon code:
J'ai comme consigne :
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.
Le problème c'est que je n'arrive pas à donner comme dimensions à "imagecreatetruecolor" la taille que j'aimerais lui donner.
En gros s'il y a 60 images dans le dossier images, je voudrais que les dimensions soient celles de toutes les images en une seule.
Je sais pas si c'est faisable ou si mon code est à côté de la plaque.
voici mon code:
<?php
$path = "images";
$imgs = getImages($path);
foreach ($imgs as $img) {
echo "mon image :\n";
print_r($img['image']);
echo "\nma size :\n";
print_r($img['size'][0]);
}
function getImages($path)
{
$myImages = array();
$dh = opendir($path);
while (false !== ($file = readdir($dh))) {
if (!is_dir($file)) {
/*
$img = create_image($file);
array_push($myImages, $img);
*/
array_push($myImages, array(
"image" => imagecreatefrompng("images/" . $file),
"size" => getimagesize("images/" . $file)
));
}
}
return $myImages;
}
function my_merge_image($imgs)
{
$all_img = imagecreatetruecolor(1920, 1080);
$background = imagecolorallocatealpha($all_img, 255, 255, 255, 127);
imagefill($all_img, 0, 0, $background);
imagealphablending($all_img, false);
imagesavealpha($all_img, true);
imagecopy($all_img, $imgs, 0, 0, 0, 0, $imgs, $imgs);
$sprite = "sprite.png";
imagepng($all_img, $sprite);
}
my_merge_image($imgs);