Création images miniatures

Harry Zona
Invité n'ayant pas de compte PHPfrance

28 déc. 2016, 14:35

Bonjour,


Je souhaite mettre en œuvre une procédure de redimensionnement des photos de mon site afin de faciliter leur affichage.
Ajoutant régulièrement de nouvelles photos, je souhaite que ce redimensionnement soit réalisé automatiquement à partir de la photo originale.

Tout ce déroule normalement, sauf que je n'arrive à afficher que des miniatures au format paysage, même pour les photos en mode portrait.
Lorsqu'il y a une photo "portrait", ça miniature se retrouve inéluctablement en "paysage".

Sauriez-vous diagnostiquer mon erreur ? Vous trouverez mon code ci-dessous.
$objetPhoto = imagecreatefromjpeg($repertoirePhotos."/imgPortrait.jpg");

$largeurPhoto = imagesx($objetPhoto);
$hauteurPhoto = imagesy($objetPhoto);

if ($hauteurPhoto >= $largeurPhoto) {
	$largeurMiniature = 225;
	$hauteurMiniature = floor($largeurMiniature / $largeurPhoto * $hauteurPhoto);
}
else {
	$largeurMiniature = 300;
	$hauteurMiniature = floor($largeurMiniature / $largeurPhoto * $hauteurPhoto);
}

$objetMiniature = imagecreatetruecolor($largeurMiniature, $hauteurMiniature);

imagecopyresampled($objetMiniature, $objetPhoto, 0, 0, 0, 0, $largeurMiniature, $hauteurMiniature, $largeurPhoto, $hauteurPhoto);
  
imagejpeg($objetMiniature, $repertoireMiniatures."/imgPortrait.jpg", 90);
Modifié en dernier par moogli le 28 déc. 2016, 16:24, modifié 1 fois.
Raison : bbcode ephp

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

28 déc. 2016, 16:37

salut,

je viens de tester ton code il fonctionne comme tu le souhaites et les proportions sont bien gardées.

Comment affiches tu les miniatures ?
tu n'aurais pas forcé la taille de l'élément ?

@+
Il en faut peu pour être heureux ......

Harry Zona
Invité n'ayant pas de compte PHPfrance

28 déc. 2016, 21:02

Merci de ta réponse.

Après vérification, il faut que je précise que la miniature est créée sur le server aux bonnes proportions mais qu'elle a subit une rotation.

Tu trouveras ci-dessous des liens vers l'image originale et la miniature crée physiquement sur le server :
http://page-test-harry-zona.pagesperso- ... /photo.JPG
http://page-test-harry-zona.pagesperso- ... iature.JPG

Au final, mon pbl réel est que je n'arrive pas à mettre ma miniature "debout".

Bonne soirée à toi.

Harry Zona
Invité n'ayant pas de compte PHPfrance

28 déc. 2016, 23:45

... et ce qui est surprenant, c'est que ce pbl de rotation n'apparaît que pour les photos en mode "portrait". Pour celles en mode "paysage", tout se déroule normalement.

Un exemple du rendu pour une photo "paysage" (rien de particulier, je le dis d'avance ...) :
http://page-test-harry-zona.pagesperso- ... otos_1.jpg
http://page-test-harry-zona.pagesperso- ... otos_2.jpg

Que la photo initiale soit en mode "paysage" ou "portrait", la miniature ressort en "paysage" (du fait d'une rotation à 90°, cf. http://page-test-harry-zona.pagesperso- ... iature.JPG).

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

31 déc. 2016, 20:22

Il y a de grandes chances que ce soit simplement ta photo qui n'est pas réellement en portrait mais dans la réalité en paysage avec une info dans les métadonnées EXIF de l'image pour indiquer de l'afficher en portrait.

Voici une explication en anglais du phénomène :
http://www.howtogeek.com/254830/why-you ... y-rotated/
Quand tout le reste a échoué, lisez le mode d'emploi...