Nouveau sur le forum ? Voici votre case départ pour bien débuter.

Liens contextuels :

Auteur
adlteam
# 22 Apr 2008 - 12:09:10
Citer
15 Posts
Bonjour,
j'ai un problème avec un redimensionnement d'image jpeg.

une fois redimensionnées mes vignettes au format Jpeg perdent trop de qualité et les couleurs bavent

j'ai fais un tour sur le net ... de quelques heures * plusieurs jours et je ne trouve toujours rien.

j'ai pourtant changé les "imagecreate()" par des "imagetruecolor()" et remplacé "imagecopyresized()" par "imagecopyresampled()".

la je suis complètement paumé et un petit coup de main de ne serait pas de refus.

merci d'avance.

voila le code:


<?php
/*
* but = redimensionnement automatique des images
*
*/
function fonc_redim($img,$size,$pos) {
//echo "IMG : ".$img."<br />";
$image_dim = getimagesize($img);
//choix de l'orientation de l'image
if($pos = width) {
// x est plus grand que y
$new_x = $size;
$new_y = ceil($image_dim[1]/($image_dim[0]/$size));
}else {
if($pos = height) {
// y est plus grand que x
$new_y = $size;
$new_x = ceil($image_dim[0]/($image_dim[1]/$size));
}else{
// x == y
$new_x = $size;
$new_y = $size;
}
}

//redimensionnement de l'image
/*$new_y = $size;
$new_x = $image_dim[0]/($image_dim[1]/$size);
*/
$extension = substr(strrchr(basename($img), "."), 1 );
$chaine = substr($img,0,-4);//enléve les 4 derniers caractères
switch($extension){
case "jpg":
$old_img = imagecreatefromjpeg($img);
$chaine.="_mini.jpg";
break;
case "jpeg":
$old_img = imagecreatefromjpeg($img);
$chaine.="_mini.jpg";
break;
case "gif":
$old_img = imagecreatefromgif($img);
$chaine.="_mini.gif";
break;
case "png":
$old_img = imagecreatefrompng($img);
$chaine.="_mini.png";
break;
}
//verification
if (!$old_img) {
$im = imagecreatetruecolor(150, 30); // Création d'une image blanche
$bgc = imagecolorallocate($old_img, 255, 255, 255);
$tc = imagecolorallocate($old_img, 0, 0, 0);
imagefilledrectangle($old_img, 0, 0, 150, 30, $bgc);
// Affichage d'un message d'errur
imagestring($old_img, 1, 5, 5, "Erreur de chargement de l'image $img", $tc);
return $old_img;
}

$new_img = imageCreatetruecolor($new_x, $new_y);
imagecopyresampled ($new_img, $old_img,0,0,0,0,$new_x,$new_y,$image_dim[0],$image_dim[1]);
switch($extension){
case "jpg":
imagejpeg($new_img,$chaine);
break;
case "jpeg":
imagejpeg($new_img,$chaine);
break;
case "gif":
imagegif($new_img,$chaine);
break;
case "png":
imagepng($new_img,$chaine);
break;
}
imagedestroy($new_img);
imagedestroy($old_img);
$adjustment = $max - $new_y;

$img_x=$image_dim[0]+40;
$img_y=$image_dim[1]+40;

return $chaine ."\" onclick=\"open('./image.php?im=".$img."', 'new', 'toolbar=no,location=no, directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes, Width=$img_x, Height=$img_y')";
}

?>

Modifié par adlteam (28 Apr 2008 - 17:58)

^
steph29
# 22 Apr 2008 - 13:38:39
Citer
19 Posts
regarde le 3eme parametre de la fonction imagejpeg()
;)

^
adlteam
# 22 Apr 2008 - 16:49:00
Citer
15 Posts
merci de ta réponse...

mais tu vas me prendre pour un noob mais je ne comprend pas ta réponse ;(

pourrais-tu préciser, s'il te plait?

Merci d'avance

^
steph29
# 23 Apr 2008 - 10:23:36
Citer
19 Posts
dans la documentation php http://fr2.php.net/manual/fr/function.imagejpeg.php
le 3eme parametre de la fonction est le paramtere quality
quality est optionnel, et prend des valeurs entières de 0 (pire qualité, petit fichier) et 100 (meilleure qualité, gros fichier). Par défaut, la valeur est celle de la qualité IJG (75).


pour ma part j'utilise 80 et le resultat est satisfaisant en terme de qualite et de poids de l'image generee
ce qui te fera:
imagejpeg($new_img,$chaine,80);


^
kptenix
# 25 Apr 2008 - 09:16:18
Citer
1 Posts
Pour ma part j'ai beau mettre le 3ème paramètre, l'image est toujours
d'aussi mauvaise qualité.

edit :*** bon je m'écrase ***

j'ai changé imagecreate(), par imagecreatetruecolor() ... forcément ca change du tout au tout.

ça m'apprendra à lire les post en diagonal tiens
Merci quand même.
Modifié par kptenix (25 Apr 2008 - 09:34)

^
adlteam
# 25 Apr 2008 - 17:41:03
Citer
15 Posts
Bonjour,
j'ai beau essayer de modifier le troisième paramètre (qualité) mais la qualité est toujours aussi crade.

il est évident que pour vérifier j'ai re-créé mes miniatures avec mon script.

donc pour le moment je tourne avec la lib GD 2.0.35 et rien ne change.

donc si vous avez une autre idée afin que je puisse mettre le resolu devant ce topic n'hésitez pas.

je continue mes recherche dans tous les cas


merci d'avance....

^
dew
# 26 Apr 2008 - 13:46:18
Citer
Administrateur
653 Posts
as-tu indiqué au moins 90 ou 100 ?

ps : balises [ code ] dans le premier post, merci...

^
adlteam
# 28 Apr 2008 - 11:08:10
Citer
15 Posts
Hello,

j'ai mis en qualité 100.

je cherche toujours.

merci d'avance

^
Nolem
# 28 Apr 2008 - 15:28:26
Citer
euh ?
195 Posts
Salut,

Si ton image de départ est vraiment en basse résolution (ex : L 40px, H 40px). Tu ne peux rien faire et ton image n'est pas exploitable sur d'autre résolution cligne . As tu fait un test de "redimension" sur un logiciel de traitement d'image ?

@+
Modifié par Nolem (28 Apr 2008 - 15:29)

Celui qui pose une question risque cinq minutes d'avoir l'air bête. Celui qui ne pose pas de question restera bête toute sa vie.

^
adlteam
# 28 Apr 2008 - 17:57:42
Citer
15 Posts
Hello,

j'ai enfin trouvé mon erreur...je vais passer pour un boulet mais bon tant pis.

pour ce qui est de renommer les fonction ça marche du tonnerre, et de plus la 3ème paramètre donne l'impression de modifier la qualité.
comme mes vignettes sont petites il n'y a pas vraiment de différence.

mon erreur vient du fait que j'avais stylisé les images au moyen de ma css il y a bien longtemps et j'avais complètement oublié un petit width="200px";

c'est à cause de ça que j'avais des images crades après les avoir redimmensionnées. une fois le width supprimé et après avoir rechargé mes images sur mon serveur je n'avais plus d'images crades.

encore merci pour votre aide.

^

référencesLes références web : openweb.eu.org - opquast.com - webmaster-hub.com - webrankinfo.com - salemioche.net - web-pour-tous.org - webonorme.org

Nos partenaires : Editions Eyrolles - Location vacances France - Location vacances Europe

Nikozen : Hébergement - Réalisation : Alsacreations.fr

Powered by Phedio v3.8 beta © dew
Contacter l'administrateur - 11.4 ms - Charte