Redimensionner image avec PHP

Profil bloqué -  
empty Messages postés 838 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Sur mon site les utilisateurs ont la possibilité d'uploader des images.
à chaque fois qu'un utilisateur uploade une image j'utilise une fonction PHP pour la redimensionner. Mon problème est que la qualité est mauvaise et pixelisé après le redimensionnement.

Voici le code de ma fonction :

function redimensionner($file,$NouvelleLargeur)
{

$TailleImage1 = getimagesize($file);
$largeur1 = $TailleImage1[0];

if ($TailleImage1) {

$largeur = $TailleImage1[0];
$hauteur = $TailleImage1[1];
$NouvelleLargeur = 650;
$Reduction = ( ($NouvelleLargeur * 100)/$largeur );
$NouvelleHauteur = ( ($TailleImage1[1] * $Reduction)/100 );


if ( $largeur1 > 650 )
{

if ($TailleImage1['mime']=='image/jpeg' ) {
$img_big = imagecreatefromjpeg($file); # On ouvre l'image d'origine
$img_new = imagecreate($NouvelleLargeur, $NouvelleHauteur);
# création de la miniature
$img_mini = imagecreatetruecolor($NouvelleLargeur, $NouvelleHauteur)
or $img_mini = imagecreate($NouvelleLargeur, $NouvelleHauteur);

// copie de l'image, avec le redimensionnement.
imagecopyresized($img_mini,$img_big,0,0,0,0,$NouvelleLargeur,$NouvelleHauteur,$TailleImage1[0],$TailleImage1[1]);

imagejpeg($img_mini,$file );

}
elseif ($TailleImage1['mime']=='image/png' ) {
$img_big = imagecreatefrompng($file); # On ouvre l'image d'origine
$img_new = imagecreate($NouvelleLargeur, $NouvelleHauteur);
# création de la miniature
$img_mini = imagecreatetruecolor($NouvelleLargeur, $NouvelleHauteur)
or $img_mini = imagecreate($NouvelleLargeur, $NouvelleHauteur);

// copie de l'image, avec le redimensionnement.
imagecopyresized($img_mini,$img_big,0,0,0,0,$NouvelleLargeur,$NouvelleHauteur,$TailleImage1[0],$TailleImage1[1]);

imagepng($img_mini,$file );

}
elseif ($TailleImage1['mime']=='image/gif' ) {
$img_big = imagecreatefromgif($file); # On ouvre l'image d'origine
$img_new = imagecreate($NouvelleLargeur, $NouvelleHauteur);
# création de la miniature
$img_mini = imagecreatetruecolor($NouvelleLargeur, $NouvelleHauteur)
or $img_mini = imagecreate($NouvelleLargeur, $NouvelleHauteur);

// copie de l'image, avec le redimensionnement.
imagecopyresized($img_mini,$img_big,0,0,0,0,$NouvelleLargeur,$NouvelleHauteur,$TailleImage1[0],$TailleImage1[1]);

imagegif($img_mini,$file );

}
}
}
}

Fin du code.

Y-a-t-il une autre façon de faire pour avoir une qualité meilleure ??

Merci de m'aider, je galère..


A voir également:

4 réponses

empty Messages postés 838 Date d'inscription   Statut Membre Dernière intervention   176
 
Si tu regarde la doc de la fonction imagejpeg le 3e argument est la qualité, par défaut définie à 75, tu peux essayer de la mettre à 100...

imagejpeg($img_mini, $file, 100);

Et fais de même pour png et gif
4
empty Messages postés 838 Date d'inscription   Statut Membre Dernière intervention   176
 
Il faut voir si l'image de base est bonne...
Au temps pour moi, ce n'est pas le même argument pour les différents types d'images :
bool imagejpeg ( resource $image [, string $filename [, int $quality ]] )
bool imagepng ( resource $image [, string $filename [, int $quality [, int $filters ]]] )
bool imagegif ( resource $image [, string $filename ] )


Pour imagepng, c'est une échelle de compression de 0 à 9, il faut donc indiquer 0 pour la qualité maximale.
Pour imagegif, pas de contrôle de qualité...

Création/Gestion/Analyse sites web & scripts PHP.
Webmaster - Référenceur - Programmeur - Graphiste
1
Profil bloqué
 
Un BIG Merci à toi empty. la qualité s'est améliorée même si elle reste un peu pixelisée. Sur certains sites ils arrivent à faire mieux comme si ça a été fait avec un logiciel de qualité. Je me demande comment ils font.
0
Profil bloqué
 
Merci j'ai rectifié ça.
Pour ce qui est de l'image de base. la même image en miniature sur certains sites à une qualité extra. Il faudra qu'un jour quelqu'un m'explique :))

Je garde le sujet ouvert peut être que j'aurai d'autres propositions
0
empty Messages postés 838 Date d'inscription   Statut Membre Dernière intervention   176
 
Ils retravaillent peut-être l'image, il y a peut-être des fonctions qui permettent de rendre plus net l'image...

Es-tu sur que sur les sites en question, ton image est modifiée par un script PHP ? Peux-tu me dire lesquels ? Parce que si tu me parle de Facebook c'est un langage qu'ils ont inventé pour crée leur site, donc on peut pas comparer...
0