Bonjour,
Dans un tchat, les utilisateurs peuvent télécharger des images ou photos que j'affiche dans le fil de discussion. Là tout se passe bien, les photos sont correctement affichées.
Pour économiser de l'espace j'ai décidé de les compresser après upload et de les redimensionner à l'affichage. Là tout se passe correctement sauf que certaines photos s'affichent avec une rotation de 90 ou 180° mais certaines sont correctes.
J'ai essayé en CSS : image-orientation: from-image; mais rien n'y fait. J'ai confirmé que le pb se passe au niveau de la compression en affichant la photo avant et après.
J'ai essayé 2 functions de compression qui donnent les mêmes résultats. Ces fonctions proviennent du net, je ne les ai pas développées moi même.
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 function compresserImage($source, $dest, $quality) { // quality 0 à 100 $info = getimagesize($source); if ($info['mime'] == 'image/jpeg') $image = imagecreatefromjpeg($source); elseif ($info['mime'] == 'image/gif') $image = imagecreatefromgif($source); elseif ($info['mime'] == 'image/png') $image = imagecreatefrompng($source); // création de l'image return imagejpeg($image, $dest, $quality); }
En fait je pense qu'il faudrait pouvoir conserver les données exif mais je ne sais pas comment faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 function convertImage($source, $dst, $width, $height, $quality){ $imageSize = getimagesize($source) ; $imageRessource= imagecreatefromjpeg($source) ; $imageFinal = imagecreatetruecolor($width, $height) ; $final = imagecopyresampled($imageFinal, $imageRessource, 0,0,0,0, $width, $height, $imageSize[0], $imageSize[1]) ; imagejpeg($imageFinal, $dst, $quality) ; }
Si je pouvais avoir une piste de réflexion je serai comblé et je vous en remercie par avance.
Partager