SNIPPET : REDIMENSIONNER UN IMAGE SANS UTILISER LA BIBLIO GD

Signaler
Messages postés
16
Date d'inscription
mardi 16 décembre 2003
Statut
Membre
Dernière intervention
30 novembre 2010
-
cs_marm0tte
Messages postés
200
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
18 janvier 2009
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52540-snippet-redimensionner-un-image-sans-utiliser-la-biblio-gd

cs_marm0tte
Messages postés
200
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
18 janvier 2009

Je tiens a corriger mon commentaire précédents. C'est pas la source qui est vraiment sans interêt et contre performant mais son exemple d'utilisation.

Désolé
cs_marm0tte
Messages postés
200
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
18 janvier 2009

Je trouve vraiment pas ca utile perso.
Redimensionner des images en html c'est une mauvaise pratique et ca diminue les performance d'un site.

Perso pour moi c'est sans interêt.
masternico
Messages postés
494
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011

Il n'y a pas de mal, merci pour la note.
Etn3000
Messages postés
39
Date d'inscription
mercredi 30 juin 2010
Statut
Membre
Dernière intervention
10 décembre 2010
1
Ah ok, j'ai cru. Toutes mes excuses.
masternico
Messages postés
494
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011

non, car comme l'a déjà souligné neigedhiver, la fonction getimagesize ne fait pas partie de la gd
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
On peut savoir pourquoi "sans utiliser la biblio gd" est mensonger ?
Etn3000
Messages postés
39
Date d'inscription
mercredi 30 juin 2010
Statut
Membre
Dernière intervention
10 décembre 2010
1
Salut,
je pense que tu devrait changer ton titre, "sans utiliser la librairie gd" est un peu mensongé, tu ne crois pas?
++
masternico
Messages postés
494
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011

Bonjour,
il suffit de mettre ces lignes de code dans une page et de lancer

';'
?>
cs_rasmulti
Messages postés
5
Date d'inscription
lundi 23 décembre 2002
Statut
Membre
Dernière intervention
5 janvier 2011

Bonjour,
comment tester si ça fonctionne ?
J'ai voulu afficher le résultat de $image_width et de $image_height avec echo, mais le résultat est :
Undefined variable...

Merci.
masternico
Messages postés
494
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011

hmmm...
neigedhiver =>
j'avais mal interprété ta remarque sur codyx. Je ne connaissais pas cette branche du site. Comme j'avais bien fait attention à venir dans la zone astuce, je ne comprenais pas pourquoi tu me disais d'aller dans une autre zone qui me semblais être étrangère à phpcs. Je te présente mes excuses.

Winwarrior =>
A 1024*768, une image pèse environ 150ko, et 15Mo à 5Mbs c'est 24s: c'est moins de temps qu'il ne faut pour agriper l'assenceur et descendre en bas en regardant toutes les photos.
Bon, celà dit, effectivement, le coté pesant d'envoyer les images en taille réelle présente certain (gros) désavantage (Perso, je suis sur un serveur avec bande passante illimité donc je ne me soucis pas trop de ça) Pour ce qui est des smartphones, tu es dans le vrai. Par contre quand on voit la vistesse à la quelle ça va, dans un an, ils seront tous équipés d'un disque dur SSD et gavés de mémoire, donc je ne m'en fais pas trop. En 3G, on optient de bons taux de transfert, et si la zone de cache est suffisante, le surf est plus ou moins transparent.

L'idée de détecter à la main les dimension de l'image est séduisante, reste àvoir si c'est faisable... facilement je veux dire

Au fait, bien vu pour le coup de getimagesize() qui ne fait pas parti de la GD...
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
Mais à la limite, comme le code n'utilise pas de fonction GD, tout va bien...

Je cite la doc de PHP :
"Cette fonction ne nécessite pas la bibliothèque GD."
winwarrior
Messages postés
654
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
10 février 2009
1
Pour le coup, il vaut mieux stocker une miniature pour chaque image (voir plusieurs miniatures si t'utilises plusieurs tailles), car imagine 100 photos haute définition de 2mo (200mo ?) à charger quand t'as 100 visiteurs en même temps (20go ?), ça te coutera bien + cher en bande passante que l'espace pris par des miniatures sur le disque dur.
Et sans parler de ça, tout le monde n'a pas 20mbps à la maison, surtout avec le développement du web sur smartphone en connexion 3G/edge.

Sinon, ce qui serait intéressant à implémenter dans ton code, ça serait de détecter le type de l'image (jpg, png, etc..) et de récupérer la taille de l'image toi même sans utiliser de fonction GD.
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
Je sais pas comment on peut faire plus clair que ce que j'ai écrit... Les snipopets se postent sur codyx.org. Ici, on est dans la zone SOURCES.
masternico
Messages postés
494
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011

Zakuli, Winwarrior =>
Bon d'accord, le titre porte peut être à confusion, mais le principe est là malgré tout. Et oui c'est vrai, j'utilise la fonction getimagesize qui fait partie de GD. Mais c'est tout.

neigedhiver =>
On est justement dans la zone... : snippet. Donc oui, c'est le bon endroit pour poster ce genre de petit bout de code. Et je ne vois pas pourquoi coddyx serait un meilleur endroit pour mon script qu'ici. A moins que tu ne considère mon script comme un déchet et coddyx comme une poubelle? Mais ça, ça ne serait pas gentil de ta part et celà ne te ressemblerait pas du tout...

Si je dois redimensionner en direct avec php, ça me pompe de la ressource proc (ex: si j'affiche un gallerie de 100 photos et que mon script doit se charger de toutes les redimensionner à la volée, le tout consulté par 100 internautes en même temps : il me faut un monstre de serveur).

Evidemment, je pourrais stocker les miniatures au bon format directement sur le disque sur serveur, mais que se passera-t-il un jour si je veux afficher des miniatures de 10px de plus sur chaque dimension? Il, faut je regénère toutes les miniatures. De même, si je veux afficher une taille de miniature sur un listing, mais une autre taille dans un descriptif, et puis encore une autre pour un autre affichage? Il faut que je stocke toutes les miniatures aux bon format?... no way

Alors, puisque les browsers savent très bien redimensionner les images à la volées et que les connexions ADSL permettent à l'utilisateur d'avoir un débit suffisant, je choisi l'option d'envoyer la photo entière et de dire au browser de me l'afficher aux bonnes dimensions. D'autant que le chache du browser permet de ne télécharger la photo qu'une fois.

Quand une photo est uploadée sur le serveur, elle est redimensionnée avec GD au format max 1024*768 (ce qui n'est déjà pas mal), puis envoyée à l'internaute telle quelle. Le browser se charge du redimensionnement. Par contre, pour qu'il puisse le faire, il faut calculer les bonnes dimensions pour ne pas que le découpage HTML soit décalé, ni que l'image soit déformée si les proportions ne sont pas respectée.

Donc oui effectivement, je ne redimensionne pas l'image dans le sens ou je la stocke en miniature, mais le résultat est que mon image est redimensionnée une fois affichée à l'écran, donc techniquement, j'ai redimensionné mon image...
winwarrior
Messages postés
654
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
10 février 2009
1
Surtout que la fonction getimagesize() fait partie de la librairie GD : http://fr.php.net/getimagesize
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
C'est limite foutage de gueule de poster un snippet ici, y'a coddyx qui sert à ça :
http://www.codyx.org
cs_zakuli
Messages postés
16
Date d'inscription
mardi 16 décembre 2003
Statut
Membre
Dernière intervention
30 novembre 2010

Le titre n'est il pas un peu abusif ? Je ne vois pas réellement de redimensionnement d'image mais plutôt des calculs sur ses dimensions.