Redimensionner image avec PHP
Profil bloqué
-
empty Messages postés 931 Statut Membre -
empty Messages postés 931 Statut Membre -
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..
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:
- Redimensionner image avec PHP
- Image iso - Guide
- Comment redimensionner une image - Guide
- Légender une image - Guide
- Acronis true image gratuit - Télécharger - Sauvegarde
- Image gratuite - Guide
4 réponses
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
imagejpeg($img_mini, $file, 100);
Et fais de même pour png et gif
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
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
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.
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
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
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...
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...