Sprite en php, afficher les images côte à côte

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Sprite en php, afficher les images côte à côte

Re: Sprite en php, afficher les images côte à côte

par two3d » 12 déc. 2021, 18:54

$img est toujours fixe, ce sera donc toujours la même image.

Re: Sprite en php, afficher les images côte à côte

par KIjuko » 11 déc. 2021, 21:01

Est-ce que cela provient de ma boucle For ou serait-ce un problème de code avec mon Opendir/readdir ?

Re: Sprite en php, afficher les images côte à côte

par KIjuko » 11 déc. 2021, 21:00

Merci ça fonctionne encore mieux avec ta solution donner en dernier !!
En revanche cela m'a donc dupliquer ma première image de mon dossier Images, pour bel et bien la mettre côte à côte.
Le problème maintenant est de savoir pourquoi cela me l'a dupliquée au lieu d'afficher normalement mes autres images de mon dossier Images.

Re: Sprite en php, afficher les images côte à côte

par two3d » 11 déc. 2021, 20:36

Tu peux aussi faire directement $pos_x += $t_width[$i]; que tu mettra en dessous "imagecopy" sinon ton image va commencer à $t_width[$i] et pas à 0

Re: Sprite en php, afficher les images côte à côte

par two3d » 11 déc. 2021, 20:34

Ta position x est toujours à zéro avec ton $pos_x = 0; qui ne change jamais, donc tes images se superposent, il te faut déclarer une variable (par exemple $width, en dessous de $pos_y = 0;) que t'initialise à 0 et que tu incrémente à chaque fois avec le width de chaque image, ça te permettra de placer l'image au bon endroit (à la suite, sur l'axe x)

Re: Sprite en php, afficher les images côte à côte

par KIjuko » 11 déc. 2021, 20:00

Merci pour ta réponse, donc je devrais refaire une boucle pour mon t_width ? J'ai dû mal à comprendre j'ai commencer récemment le php..

Re: Sprite en php, afficher les images côte à côte

par two3d » 11 déc. 2021, 19:42

Il faut que tu ajoute chaque width de chaque image pour l'ajouter à la prochaine et ainsi placer les images côte à côte (x = 0 (sauvegarde du width de cette image 1), x = width de l'image 1 (sauvegarde du width de cette image 2), x = width de l'image 2, etc..)

Sprite en php, afficher les images côte à côte

par KIjuko » 10 déc. 2021, 22:08

Bonjour, j'ai enfin récemment évoluer sur mon code.
Mais je bloque sur le stade final de mon projet où je voudrais afficher mes PNG côte à côte sur mon sprite.
Voici mon code:

<?php
function getImages($path)
{
$dh = opendir($path);
$t_width = array();
$t_height = array();
$myImages = array();

while (false !== ($files = readdir($dh))) {
if ($files != "." && $files != "..") {
list($width, $height) = getimagesize($path . "/" . $files);
$t_width[] = $width;
$t_height[] = $height;
$img = imagecreatefrompng($path . "/" . $files);
array_push($myImages, $img);
}
}

$n_width = array_sum($t_width);
$n_height = max($t_height);

$all_img = imagecreatetruecolor($n_width, $n_height);
$background = imagecolorallocatealpha($all_img, 255, 255, 255, 127);
imagefill($all_img, 0, 0, $background);
imagealphablending($all_img, false);
imagesavealpha($all_img, true);

$pos_x = 0;
$pos_y = 0;

for ($i = 0; $i < count($myImages); $i++) {
$myImages[$i];
$t_width[$i];
$n_width = $t_width[$i];
imagecopy($all_img, $img, $pos_x, $pos_y, 0, 0, $n_width, $n_height);
}

$sprite = "sprite.png";
imagepng($all_img, $sprite);
}
getImages("images");

Je sais que le problème provient du côté de mon "for" , étant débutant je tourne en rond pour trouver la solution...
J'ai réussi à créer un sprite, qui affiche une seule png pour le moment au lieu de toutes les afficher.
On m'a dit que ce serait un problème de positionnement de mes png .
Le résultat visuel : impossible de montrer une image externe.