[RESOLU] Concatener images, sprite..imagecreatetruecolor..

Petit nouveau ! | 6 Messages

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:
<?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);

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

09 déc. 2021, 12:52

Du coup, tu dois calculer d'abord la taille de tes 60 images pour savoir la taille à donner à ton sprite.


Sinon il existe déjà quelques exemples de ce que tu cherches à faire (je n'ai pas testé toutefois mais ça peut servir d'inspiration) :
https://gist.github.com/myCodebox/797dc ... 34f637addf
https://phpsources.net/code/php/images/ ... prites-css
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 6 Messages

09 déc. 2021, 13:52

Merci je vais regarder si cela pourra apporter une solution à mon problème