Redimension image

Smeloh
Invité n'ayant pas de compte PHPfrance

23 juil. 2012, 17:15

Bonjour,

Petit soucis sur un script de redimension d'image. Je l'ai parcouru dans tous les sens, je pense être proche de la solution, mais je sèche vraiment là ...

Pour résumer, il me permet d'uploader des images dans ma galerie (une initiale, une moyenne et une miniature). L'image est donc déclinée 3 fois.
Dans cette galerie j'upload des images portraits et paysages (h>l et l>h).

Mon pb c'est qu'une rotation se fait pour les images portrait. Et j'aimerais que cette rotation ne s'opère pas.

Je pense que ça situe là où je calcule le ration entre la taille initiale et la miniature, mais je ne suis pas sûr.

Code : Tout sélectionner

<?php if (!empty($_POST['InsererNews'])) { $ListeExtension = array('jpg' => 'image/jpeg', 'jpeg'=>'image/jpeg'); $ListeExtensionIE = array('jpg' => 'image/pjpeg', 'jpeg'=>'image/pjpeg'); if (!empty($_POST['TitreNews']) && (!empty($_FILES['ImageNews']))) { $TitreNews = $_POST['TitreNews']; $ContenuNews = $_POST['ContenuNews']; if ($_FILES['ImageNews']['error'] <= 0) { if ($_FILES['ImageNews']['size'] <= 2097152) { $ImageNews = $_FILES['ImageNews']['name']; $ExtensionPresumee = explode('.', $ImageNews); $ExtensionPresumee = strtolower($ExtensionPresumee[count($ExtensionPresumee)-1]); if ($ExtensionPresumee == 'jpg' || $ExtensionPresumee == 'jpeg') { $ImageNews = getimagesize($_FILES['ImageNews']['tmp_name']); if($ImageNews['mime'] == $ListeExtension[$ExtensionPresumee] || $ImageNews['mime'] == $ListeExtensionIE[$ExtensionPresumee]) { $ImageChoisie = imagecreatefromjpeg($_FILES['ImageNews']['tmp_name']); $TailleImageChoisie = getimagesize($_FILES['ImageNews']['tmp_name']); $NouvelleLargeur = 180; //Largeur choisie à 350 px mais modifiable $reduc = $NouvelleLargeur / $TailleImageChoisie[0]; $NouvelleHauteur = ( ($TailleImageChoisie[1] * $reduc )); $NouvelleImage = imagecreatetruecolor($NouvelleLargeur , $NouvelleHauteur) or die ("Erreur"); $NouvelleLargeur2 = 400; //Largeur choisie à 350 px mais modifiable $NouvelleHauteur2 = ( ($TailleImageChoisie[1] * (($NouvelleLargeur2)/$TailleImageChoisie[0])) ); $NouvelleImage2 = imagecreatetruecolor($NouvelleLargeur2 , $NouvelleHauteur2) or die ("Erreur"); imagecopyresampled($NouvelleImage2 , $ImageChoisie , 0,0, 0,0, $NouvelleLargeur2, $NouvelleHauteur2, $TailleImageChoisie[0],$TailleImageChoisie[1]); imagecopyresampled($NouvelleImage , $ImageChoisie , 0,0, 0,0, $NouvelleLargeur, $NouvelleHauteur, $TailleImageChoisie[0],$TailleImageChoisie[1]); $NomImageChoisie = explode('.', $ImageNews); $NomImageExploitable = time(); //Enregistrement de l'image initiale : imagejpeg($NouvelleImage2 , '../images/'.$NomImageExploitable.'FullImage.'.$ExtensionPresumee, 100); $LienImageFull = 'images/'.$NomImageExploitable.'FullImage.'.$ExtensionPresumee; imagejpeg($NouvelleImage , '../images/'.$NomImageExploitable.'.'.$ExtensionPresumee, 100); $LienImageNews = 'images/'.$NomImageExploitable.'.'.$ExtensionPresumee; $req = $bdd->query('INSERT INTO galerie VALUES ("", "'.$TitreNews.'", "'.$LienImageNews.'", "'.$LienImageFull.'")') or die(mysql_error()); if ($req) { echo '<div class="message2">La news a bien été insérée<br /><br /><a href="upload.php">Retourner à la page précédente</a></div>'; } } else { echo 'Le type MIME de l\'image n\'est pas bon'; } } else { echo 'L\'extension choisie pour l\'image est incorrecte'; } } else { echo 'L\'image est trop lourde'; } } else { echo 'Erreur lors de l\'upload image'; } } else { echo 'Au moins un des champs est vide'; } } ?>
Merci ;)

ViPHP
AB
ViPHP | 5818 Messages

23 juil. 2012, 20:09


Mon pb c'est qu'une rotation se fait pour les images portrait. Et j'aimerais que cette rotation ne s'opère pas.
Il y a réellement une rotation de l'image ou une mauvaise dimension ?

smeloh
Invité n'ayant pas de compte PHPfrance

24 juil. 2012, 11:23

Je ne sais pas, mais toutes mes images dont la largeur est inférieur à la hauteur subissent une rotation de 90° horaires.

Qu'entends-tu par mauvaise dimension ?

ViPHP
ViPHP | 2287 Messages

24 juil. 2012, 12:12

A ma connaissance, GD ne gère pas l'indication portrait/paysage, qui est une information présente au niveau du fichier. Toutes les images sont donc manipulées sans tenir compte de cette donnée, ce qui explique la différence avec ce que tu vois quand tu manipules les images dans un autre logiciel. En tout cas ça ne vient pas de ton code :)
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Smeloh
Invité n'ayant pas de compte PHPfrance

24 juil. 2012, 12:36

Une idée d'où ça peut provenir ?

ViPHP
xTG
ViPHP | 7331 Messages

24 juil. 2012, 13:01

Une idée d'où ça peut provenir ?
Des informations de l'image.

Smeloh
Invité n'ayant pas de compte PHPfrance

24 juil. 2012, 14:59

Comment est-ce que ça se gère ?

ViPHP
ViPHP | 2287 Messages

24 juil. 2012, 16:50

Plus d'infos (qui peuvent conduire à une solution php) ici, en anglais : http://www.impulseadventure.com/photo/e ... ation.html

C'est un champ exif, semble t-il.
if(!@work()){ Nespresso(); } else { what(); }
______________________________