Page 1 sur 1

Rotation image (actualiser)

Posté : 29 avr. 2021, 20:08
par Jefekoi
Bonjour,

Avec difficulté mais j'ai réussi à faire tourner une image à 90°
grâce à ce script :

Code : Tout sélectionner

$Filename = 'uploads/'.$_REQUEST['flip']; function rotation($Filename,$degres) { $infoImg =getimagesize($Filename); if(file_exists($Filename)) { if ($infoImg['mime'] == 'image/jpeg') { $source = imagecreatefromjpeg($Filename); $rota = imagerotate($source,$degres,0); Imagejpeg($rota,$Filename); } elseif ($infoImg['mime'] == 'image/jpg') { $source = imagecreatefromjpeg($Filename); $rota = imagerotate($source,$degres,0); Imagejpeg($rota,$img); } elseif ($infoImg['mime'] == 'image/png') { $source = imagecreatefrompng($Filename); $rota = imagerotate($source,$degres,0); Imagepng($rota,$Filename); } elseif ($infoImg['mime'] == 'image/gif') { $source = imagecreatefromgif($Filename); $rota = imagerotate($source,$degres,0); Imagegif($rota,$img); } } return true; } rotation($Filename,90);


J'ignore si il est parfait ou pas.. mais je sais que ça marche.

Le seul souci c'est qu'il faut que j'actualise la page 4 à 5 fois pour voir que l'image à bien tournée à 90°

Avez vous une astuce pour éviter ce problème d'actualisation ?

Merci pour votre aide.

Eric

Re: Rotation image (actualiser)

Posté : 30 avr. 2021, 10:51
par Shadowwera
Salut !

Si je ne dit pas de bêtise, c'est dû à la mise en cache. Quand un navigateur charge une page web, il la garde en cache afin de l'actualiser plus rapidement ou l'afficher plus vite en cas de retour sur cette page. Dans ton cas, comme l'url de ton image ne change pas, le navigateur ne se dit pas que c'est une nouvelle image et donc affiche celle qu'il a en cache, donc celle qui n'a pas subit de rotation

Je ne sais pas trop comment tu pourrais adapter ceci à ton code car je ne sais pas comment tu affiche l'image, mais j'avais eu cette problématique il y a quelque temps et je les régler en mettant une variable random dans l'URL de l'image :
$url = "path/to/image/image.png";
$newRndPath = $url. '?rand="' . rand(0, 2000) . '"';
Ainsi, l'url de l'image deviens quelque chose du genre : path/to/image/image.png?rand="1791"

Cette valeur ne va pas empêcher votre image de s'afficher, par contre pour le navigateur, comme l'url est différente alors il s'agit d'une nouvelle photo et donc va l'afficher plutôt que d'aller chercher celle en cache

J'espère avoir était suffisamment clair dans mes explications :shock:

Re: Rotation image (actualiser)

Posté : 30 avr. 2021, 15:05
par Jefekoi
Bonjour,

Effectivement je n'avais pas pensé à ça, bien vu.

Je vais tout simplement renommer l'image au moment de la rotation .

Je vais tester et je viendrais confirmer.

Merci Shadowwera

Re: Rotation image (actualiser)

Posté : 30 avr. 2021, 15:44
par Shadowwera
Pas de soucis, j'attends ton retour !

Re: Rotation image (actualiser)

Posté : 30 avr. 2021, 21:52
par Jefekoi
Re,

Voilà c'est bon, en fait mon image est composé qu'avec des chiffres

Code : Tout sélectionner

$name= ucfirst(strtolower($context['user']['name']."_".date("d-m-Y")."_".rand(1000,100000)));
Et lorsque l'on tourne une image j'ai simplement extrait le dernier chiffre pour faire un "chiffre = chiffre +1"

Voilà et ça marche :)

Le seul truc qui m'a pris un peu de temps c'est qu'il y a aussi un fichier "thumb", qui a le même nom :)

Re: [RESOLU] Rotation image (actualiser)

Posté : 04 mai 2021, 09:02
par Shadowwera
Parfait ! Ravi de t'avoir aider =)