REDIMMENSIONNER UNE IMAGE : CRÉER UNE MINIATURE

webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 - 28 nov. 2008 à 00:32
abdoulax Messages postés 875 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 22 juin 2012 - 5 déc. 2008 à 14:16
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/48555-redimmensionner-une-image-creer-une-miniature

abdoulax Messages postés 875 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 22 juin 2012 1
5 déc. 2008 à 14:16
Oula vous êtes pas très sympas!! Bon après, c'est vrai qu'il aurait peut être pas dû mettre initié mais plutôt débutant (enfin perso je mes toujours débutant, au moins je suis trankil).
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
28 nov. 2008 à 07:58
$hauteurDestination = $largeurDestination*$hauteurSource/$largeurSource; // proportionnel

et si on veut definir la hauteur et pas la largeur ?
et si on veut definir une hauteur et une largeur maximale ?
et si on s'en fout de la proportionalite ?

bref, ca manque clairement d'option.
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
28 nov. 2008 à 00:32
Salut,

Je suis navré de te dire que ta source est presque quasiment inexploitable en l'état. Je me demande même pourquoi tu as créé une classe quand une fonction aurait suffit. De plus c'est carrément le fouillis dans ton code. Voilà une liste non exhaustive de ce qui ne va pas dans ce code selon moi :

1/ Tu mélanges syntaxe PHP 4 et syntaxe PHP 5. En effet, tu utilises bien le mot-clé "public" pour tes méthodes mais à contrario tu utilises encore le mot-clé "var" issu de PHP 4. Un attribut "private" ou "protected" ferait davantage l'affaire soit dit en passant pour plus de sûreté de programmation.

2/ Tes noms de méthodes sont tantôt en anglais, tantôt en français, tantôt en lower camel case ou bien tantôt en lower case avec underscore. Quel intérêt ? On s'y perd ! Apporte au développeur une API cohérente dans la manière de l'employer. Personnellement j'ai une préférence pour les noms de méthodes en anglais et lower camel case.

3/ Tu définis en dur les dimensions finales de la miniature au sein même de la méthode creerMiniature(). Comment je fais si je veux une miniature de 110 x 110 px ? Comment je fais si je dois générer en une passe plusieurs miniatures de dimensions différentes de mon image ? Et bien je ne peux pas, ce qui rend ton code complètement inutile. Tu aurais pu faire l'effort minimum de placer ces deux variables en paramètre de la méthode. Ainsi nous pourrions faire :

$img->creerMiniature(100,100);
$img->creerMiniature(300,300);

4/ Tu ne crées des miniatures qu'à partir d'images JPEG. Et si je veux miniaturiser un GIF, un BMP ou un PNG par exemple ? Bah je ne peux pas...

5/ Et si j'ai envie de changer le nom et le répertoire de destination des miniatures facilement ? Là encore, il aurait fallu proposer un paramètre facultatif à ta méthode creerMiniature()

6/ Que se passe-t-il si j'essaie de passer un fichier PHP à la place d'une image, ou bien une image avec un nom à la con ? Tu ne gères aucune erreur en cas de problème. Le nommage de l'image final n'est pas sain non plus car on peut mettre n'importe quel caractère à la con dans le nom de l'image originale, on l'aura à nouveau dans l'image miniaturisée. Bonjour les dégâts que ça peut produire en terme de sécurité...

7/ Où sont les tests sur l'extension, le type, les dimensions... ? Tu ne connais pas getimagesize() ?

8/ A quand l'implémentation de fonctionnalités plus sympas comme le crop, l'inversion des couleurs, la génération d'un captcha... ?

Au final, j'espère que tu vois clairement que ta source n'est pas adaptée et inutilisable en l'état. As-tu compris l'intérêt des fonctions utilisateurs ? As-tu compris ensuite l'intérêt de faire des classes ?

++

Hugo.
Rejoignez-nous