coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 2012
-
25 avril 2007 à 19:46
bouticheval
Messages postés1Date d'inscriptionlundi 19 janvier 2009StatutMembreDernière intervention18 mars 2009
-
5 mars 2009 à 12:03
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
bouticheval
Messages postés1Date d'inscriptionlundi 19 janvier 2009StatutMembreDernière intervention18 mars 2009 5 mars 2009 à 12:03
Salut, merci pour ton code je m'en suis servi pour redimensionner une image, par contre dans l'état actuelle des choses la redimension ne se fait pas selon les limites imposés mais selon le rapport choisi, je l'ai un peu modifié pour qu'il ne dépasse pas les largeur et hauteur max défini. Je suis pas un pro codeur mais en tout cas ça marche, si ça peut servir à quelqu'un :
function redimenssion($img, $w_max, $h_max){
$size_img = getimagesize($img); // Dimensions de l'image de base
$w_img = $size_img[0]; // Largeur de l'image de base
$h_img = $size_img[1]; // Hauteur de l'image de base
if (($w_img<=$w_max)AND($h_img<=$h_max)){
$size_final = array($w_img, $h_img); // Si l'image est plus petite que le max on ne la modifie pas
} else {
$rapport = $h_max / $h_img; // Rapport de reduction
if ($w_final>$w_max){
// si la largeur finale dépasse la largeur max on re-dimensionne
$w_final=$w_max; // On transforme la largeur en largeur max la largeur
$rapportReductionmax=$w_final/$w_max; // On calcul le nouveau rapport
$h_final = ceil($h_img * $rapportReductionmax); // On en déduit la nouvelle hauteur
} else if ($h_final>$h_max) {
// si la hauteur finale dépasse la hauteur max on re-dimensionne
$h_final=$h_max; // On transforme la hauteur en hauteur max la largeur
$rapportReductionmax=$h_final/$h_max; // On calcul le nouveau rapport
$w_final = ceil($w_img * $rapportReductionmax); // On en déduit la nouvelle largeur
}
$size_final = array($w_final, $h_final); // Mise en tableau des dimensions finales
}
return $size_final; // On retourne les dimensions de la miniature sous forme de tableau
}
hugsgiver
Messages postés7Date d'inscriptionlundi 3 décembre 2007StatutMembreDernière intervention17 avril 2008 19 août 2008 à 16:43
oui, sa je le sait merci, mais se que je voulait dire, c'est que le calcule qui est fait plus haut pour calculer le bon raport hauteur - largeur est inutile, il suffit par exemple d'écrire juste la hauteur, et le navigateur se garge de calculer la largeur!
cs_bluedemon
Messages postés41Date d'inscriptionmercredi 21 septembre 2005StatutMembreDernière intervention 3 novembre 2008 19 août 2008 à 13:35
hugsgiver, la taille en octet correspond à la qualité de l'image et à sa taille. Pour avoir une taille plus petite en octet, il faut réduire l'image et sa qualité.
Bien sur qu'il faut utiliser la librairie GD. C'est elle qui te permettra de réduire l'image et sa qualité.
Et l'exemple que tu as donné, tu affiche l'image avec une taille peut être réduite mais que en affichage. Si tu as une image de 1280*1024, tu l'affichera peut être en 200*(ratio) mais le chargement sera très long surtout quand c'est une galerie. Car tu charges l'image en 1280*1024 et non 200*(ratio). D'où l'intérêt de charger l'image dans un poids plus petit.
hugsgiver
Messages postés7Date d'inscriptionlundi 3 décembre 2007StatutMembreDernière intervention17 avril 2008 16 août 2008 à 12:25
Moi je pensait trouver une fonctionpour réduire la taille en octet, vous vous compliquez bien la tête, sa c facile se que vous avez fait, il y a plus simple, et la vous êtes sur que le taille n'est pas déformé:
echo "";
moi je vait plutot me pencher sur la librairie gd!
maitre_dious
Messages postés4Date d'inscriptionsamedi 10 avril 2004StatutMembreDernière intervention 6 février 2008 6 févr. 2008 à 14:56
Un poids identique.
zarkofaj
Messages postés39Date d'inscriptionjeudi 11 janvier 2007StatutMembreDernière intervention18 novembre 2007 2 juin 2007 à 12:53
Ouff . . . La discussion est quand même assez sévère
Ours70
Messages postés8Date d'inscriptionlundi 14 août 2006StatutMembreDernière intervention 4 mai 2007 4 mai 2007 à 11:27
Super sympa ce code pour redimmensioner les images !!
Et pour faire une galleries d'images ca peutr etre le top !!
En plus vu que je suis debutant aussi lol ca va servir beaucoup !!
PS : Ou pourrai- je trouve un script aussi pourla creation de galleries d'images TRES SIMPLE AUSSI !!!
MERCI
Bernisage
Messages postés2Date d'inscriptionlundi 18 août 2003StatutMembreDernière intervention 2 mai 2007 2 mai 2007 à 19:45
bluedemon : oui j'ai bien compris. J'ai juste mis cette formule pour voir si elle était plus ou moins correcte. Je n'ai jamais dis que j'allais l'utiliser pour juste redimensionner l'image au niveau de ses paremètres width et height. Je sais très bien que c'est trop lourd à charger dans le navigateur de l'utilisateur, autant au niveau poids de l'image (imaginer que vous en ayez 20 à charger), qu'au niveau des ressources matérielles.
ozyman
Messages postés13Date d'inscriptiondimanche 9 juillet 2000StatutMembreDernière intervention 8 mars 2014 2 mai 2007 à 12:02
bluedemon je te remercie d'avance car c'est un peu dur pour moi de tout développer tout seul ;-)
trop top...
cs_bluedemon
Messages postés41Date d'inscriptionmercredi 21 septembre 2005StatutMembreDernière intervention 3 novembre 2008 1 mai 2007 à 19:51
Bernisage : Comme on l'a expliqué, ce genre de miniature n'est qu'une miniature en affichage mais pas en poid donc lourd a charger si l'image est grande d'origine.
Bernisage
Messages postés2Date d'inscriptionlundi 18 août 2003StatutMembreDernière intervention 2 mai 2007 1 mai 2007 à 02:04
Bonjour !
Je me suis personnellement aussi penché sur le sujet et j'ai fait comme suite :
En considérant qu'on base la miniature sur une largeur prédéfinie ex: 150px
cs_bluedemon
Messages postés41Date d'inscriptionmercredi 21 septembre 2005StatutMembreDernière intervention 3 novembre 2008 30 avril 2007 à 16:33
Ok j'y penserai dès que g plus de tps devant moi (il faut que je rajoute des commentaires dans le code pour le diffuser). MAis aucun probleme, je le diffuserai.
ozyman
Messages postés13Date d'inscriptiondimanche 9 juillet 2000StatutMembreDernière intervention 8 mars 2014 30 avril 2007 à 11:21
"bluedemon" je cherche une astuce comme ça car il existe des serveurs gratuits en php qui n'ont pas Gd accessible gratuitement.
Alors pour faire une galerie photo sans redimentionnement c'est plutot difficile. ( on est vite limité par le poids important des photos). Merci d'avance
cs_bluedemon
Messages postés41Date d'inscriptionmercredi 21 septembre 2005StatutMembreDernière intervention 3 novembre 2008 27 avril 2007 à 08:20
kankrelune a raison, tu ne fais que redimensionner l'affichage mais pas l'image. Le navigateur chargera l'image avec le poid total, dans ton cas le chargement serait long si l'image est grande meme si en affichage l'image apparait en petit. J'ai un script qui permet de redimensionner, de régler la qualité de compression en enregistrant l'image (apres un upload).Je penserai à le diffuser.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 26 avril 2007 à 23:20
moi dans ma fonction, on envoyait les deux, et ca prennait soit le rapport minimum soit le rapport maximum, soit les deux... c'etait bien plus souple on pouvait faire une photo redimentionnee de X * Y px par exes, par defaut ou exactement...
amezghal
Messages postés385Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention21 août 20155 26 avril 2007 à 22:51
tu prend comme argument le max width, puis tu doit calculer le heigth automatiquement pour garder le rapport entre le heigth et le width original, et inversement...
car si on prend le heigth et le width on risque de déformer l'image ^^
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 26 avril 2007 à 13:15
"ceux qui n'ont pas la lib GD installée sur leur serveur..."=> ca existe encore ca ?
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 26 avril 2007 à 10:50
Juste au passage... tu ne redimensionne pas vraiment tes images là... tu change juste leur taille d'affichage... l'intérêt du redimensionnement c'est d'avoir des images plus petites certes mais aussi et avant tout d'obtenir des images plus légère ce qui n'est pas le cas ici et n'est, à ma connaissance, pas possible sans une extension de manipulation d'image comme la lib GD ou alors faut toucher sa bille en manipulation de données binaires... mais bon ce code peut quand même servir pour ceux qui n'ont pas la lib GD installée sur leur serveur... .. .
@ tchaOo°
GanJasTeR
Messages postés27Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention31 mai 2007 26 avril 2007 à 03:18
Ha oui lol et bien c'est une erreur de frappe...
Pourtant les images ne paraissaient pas déformer.
Du coup tu avait raison, $rapport = $w_max / $w_img est plus juste.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 25 avril 2007 à 20:58
(a+a)/2 = a...
enfin tu en penses ce que tu veux
GanJasTeR
Messages postés27Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention31 mai 2007 25 avril 2007 à 20:47
Dans la première version j'avais fait le rapport de cette façon uniquement sur la largeur.
Le problème est que pour une photo en portrait le rapport de la longueur n'est pas totalement bon pour la hauteur.
Le calcul que je fais est pour trouver le milieu entre les 2 rapports afin d'avoir une taille finale plus équilibrée. Sur des miniatures du genre 100*100, un seul rapport suffit on ne voit pas trop la différence mais sur des plus grosses miniatures (300*300) ça déforme pas mal.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 25 avril 2007 à 20:40
$rapport = $w_max / $w_img; serait plus adapte non ?
GanJasTeR
Messages postés27Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention31 mai 2007 25 avril 2007 à 20:31
Tu pourrais être plus explicite qu'un simple lol ? Si tu ne comprend pas mon calcul relie tes cours de maths de 6°...
Et je me cassais la tête pour trouver un moyen de redimenssioner mes images sans les déformer en écrivant le moins de choses possibles.
Après niveau optimisation et chargement de la page ce n'est sûrement pas ce qu'il y a de mieux... Mais c'est Simple !
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 25 avril 2007 à 19:46
5 mars 2009 à 12:03
function redimenssion($img, $w_max, $h_max){
$size_img = getimagesize($img); // Dimensions de l'image de base
$w_img = $size_img[0]; // Largeur de l'image de base
$h_img = $size_img[1]; // Hauteur de l'image de base
if (($w_img<=$w_max)AND($h_img<=$h_max)){
$size_final = array($w_img, $h_img); // Si l'image est plus petite que le max on ne la modifie pas
} else {
$rapport = $h_max / $h_img; // Rapport de reduction
$w_final = ceil($w_img * $rapport); // Largeur miniature arrondie
$h_final = ceil($h_img * $rapport); // Hauteur miniature arrondie
if ($w_final>$w_max){
// si la largeur finale dépasse la largeur max on re-dimensionne
$w_final=$w_max; // On transforme la largeur en largeur max la largeur
$rapportReductionmax=$w_final/$w_max; // On calcul le nouveau rapport
$h_final = ceil($h_img * $rapportReductionmax); // On en déduit la nouvelle hauteur
} else if ($h_final>$h_max) {
// si la hauteur finale dépasse la hauteur max on re-dimensionne
$h_final=$h_max; // On transforme la hauteur en hauteur max la largeur
$rapportReductionmax=$h_final/$h_max; // On calcul le nouveau rapport
$w_final = ceil($w_img * $rapportReductionmax); // On en déduit la nouvelle largeur
}
$size_final = array($w_final, $h_final); // Mise en tableau des dimensions finales
}
return $size_final; // On retourne les dimensions de la miniature sous forme de tableau
}
19 août 2008 à 16:43
19 août 2008 à 13:35
Bien sur qu'il faut utiliser la librairie GD. C'est elle qui te permettra de réduire l'image et sa qualité.
Et l'exemple que tu as donné, tu affiche l'image avec une taille peut être réduite mais que en affichage. Si tu as une image de 1280*1024, tu l'affichera peut être en 200*(ratio) mais le chargement sera très long surtout quand c'est une galerie. Car tu charges l'image en 1280*1024 et non 200*(ratio). D'où l'intérêt de charger l'image dans un poids plus petit.
16 août 2008 à 12:25
echo "";
moi je vait plutot me pencher sur la librairie gd!
6 févr. 2008 à 14:56
2 juin 2007 à 12:53
4 mai 2007 à 11:27
Et pour faire une galleries d'images ca peutr etre le top !!
En plus vu que je suis debutant aussi lol ca va servir beaucoup !!
PS : Ou pourrai- je trouve un script aussi pourla creation de galleries d'images TRES SIMPLE AUSSI !!!
MERCI
2 mai 2007 à 19:45
2 mai 2007 à 12:02
trop top...
1 mai 2007 à 19:51
1 mai 2007 à 02:04
Je me suis personnellement aussi penché sur le sujet et j'ai fait comme suite :
En considérant qu'on base la miniature sur une largeur prédéfinie ex: 150px
//Largeur choisie
$largeurMax = 150;
//L'image d'origine
$largeurImg = 800;
$hauteurImg = 600;
//Rapport
$rapport = $largeurMax / $largeurImg; //0.19
//Taille finale
$width = $largeurMax; //150px
$height = $rapport * $hauteurImg; //114px
?
30 avril 2007 à 16:33
30 avril 2007 à 11:21
Alors pour faire une galerie photo sans redimentionnement c'est plutot difficile. ( on est vite limité par le poids important des photos). Merci d'avance
27 avril 2007 à 08:20
26 avril 2007 à 23:20
26 avril 2007 à 22:51
car si on prend le heigth et le width on risque de déformer l'image ^^
26 avril 2007 à 13:15
26 avril 2007 à 10:50
@ tchaOo°
26 avril 2007 à 03:18
Pourtant les images ne paraissaient pas déformer.
Du coup tu avait raison, $rapport = $w_max / $w_img est plus juste.
25 avril 2007 à 20:58
enfin tu en penses ce que tu veux
25 avril 2007 à 20:47
Le problème est que pour une photo en portrait le rapport de la longueur n'est pas totalement bon pour la hauteur.
Le calcul que je fais est pour trouver le milieu entre les 2 rapports afin d'avoir une taille finale plus équilibrée. Sur des miniatures du genre 100*100, un seul rapport suffit on ne voit pas trop la différence mais sur des plus grosses miniatures (300*300) ça déforme pas mal.
25 avril 2007 à 20:40
25 avril 2007 à 20:31
Et je me cassais la tête pour trouver un moyen de redimenssioner mes images sans les déformer en écrivant le moins de choses possibles.
Après niveau optimisation et chargement de la page ce n'est sûrement pas ce qu'il y a de mieux... Mais c'est Simple !
25 avril 2007 à 19:46
lol
quand au
le width et height c'est sans interret...