CLASSE : GÉNÉRATEUR DE MINIATURE STRICTE OPTIMISÉ

MangaII Messages postés 129 Date d'inscription dimanche 9 décembre 2001 Statut Membre Dernière intervention 12 janvier 2009 - 12 janv. 2009 à 09:09
GauldoMagique Messages postés 8 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 12 janvier 2009 - 12 janv. 2009 à 11:33
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/48932-classe-generateur-de-miniature-stricte-optimise

GauldoMagique Messages postés 8 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 12 janvier 2009
12 janv. 2009 à 11:33
Ok effectivement dans mon ancienne fonction, c'est bien un min() que j'ai... Je ne sais plus pourquoi j'avais modifier ceci. Merci.

En effet, ce que je trouve intéressant de phpcs, c'est de pouvoir faire évoluer des scripts par les commentaires... Moi des idées j'en ai trop et pas assez, c'est bordélique dans ma tête ; ce que j'aime c'est trouver des solutions à des problèmes, et non pas trouver des problèmes ^^

Merci beaucoup.
MangaII Messages postés 129 Date d'inscription dimanche 9 décembre 2001 Statut Membre Dernière intervention 12 janvier 2009
12 janv. 2009 à 11:28
Ton problème de centrage viens de là :
$border = max($l,$h);
l'une des 2 valeurs est forcément = 0
L'autre est forcément négative (puisque tu croppe sur le plus petit coté, l'autre est donc plus grand et $this->hmaxi - $hratio; doit donner un résultat négatif).

Hors tu cherche le max des 2 ... mais un négatif est toujours plus petit que 0. Ce qui fait que c'est toujours 0 qui sort pour le border. Donc pas le bon coté !

Met un min à la place du max (tu aura un border négatif) et border/2 correspondra bien au décalage négatif pour déplacer l'image.

Je vois que mes suggestions t'on inspiré ...
GauldoMagique Messages postés 8 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 12 janvier 2009
12 janv. 2009 à 11:17
Merci pour ce commentaire constructif. En réalité, j'ai fait cette classe pour les besoins d'un projet, donc c'était bien destiné à prendre le tableaux Files. Je note donc l'intérêt de faire évoluer cette classe, afin de prendre de nouveaux paramètres et donc... se rendre plus utile.

Je précise que l'image doit être centrée (d'où $srcX et $srcY, selon ce qui dépasse, la variable prendra la valeur bordure/2.) Il est possible que lors de la réecriture (à la base une fonction) j'ai fait une erreur à ce niveau.

Il me semble aussi pouvoir choisir le nom de la photo via $this->iname('$nom'); mais je n'ai pas testé. A voir.

Donc je compte travailler prochainement sur :

-Prendre autre chose qu'un tableau Files. Une méthode indépendante (optionnelle) sera rajoutée pour supporter les tableaux files.

-Le choix si on 'crop' ou pas, dans le cas négatif, si on force à la bonne taille et dans ce cas, choisir la couleur de fond.

-Choisir l'extension du fichier ainsi que des paramètres supplémentaires sur le format choisi.

-Le choix si on supprime l'image où non.

Quant à la dernière suggestion, je tiens à la clareté du code, et la ligne je la trouvais beaucoup trop longue...

Merci pour ces précieux conseils et ces encouragements.

N'hésitez pas à faire de nouvelles propositions !
MangaII Messages postés 129 Date d'inscription dimanche 9 décembre 2001 Statut Membre Dernière intervention 12 janvier 2009
12 janv. 2009 à 09:09
Salut !

Plutot sympa
Dans ton source, dans le form, le nom du fichier n'est pas le bon (testmini au lieu de miniform)
Petit bug ? l'image est toujours coupées en bas ou à droite. Essaye de centrer l'image !

Le code est clair et simple.
Quelques suggestions, pour pouvoir le réutiliser :
- passe en paramêtre directement le nom du fichier source (et pas le tableau file). On ne redimensionne pas toujours une image uploadée.
- A priori, tu croppe toujours l'image. Mais il peut être intéressant au contraire de la réduire plus pour qu'elle rentre en entier. Via un paramêtre on peut demander à cropper ou pas. Ca amène quelques soucis supplémentaire : est-ce qu'on redimensionne la sortie (pour s'adapter aux proportions de l'image) ou est-ce qu'on force aux dimensions demandées. Et si on force les dimensions, il faut définir la couleur du fond (pour les bords).
- Un petit détail, tu supprime toujours l'image source. C'est vrai que pour un fichier uploadé, c'est mieux. Néanmoins, si tu l'utilise sur autre chose comme image, c'est dommage de supprimer l'original !
- Pour l'enregistrement du devrai mettre en paramêtre le format choisi (et le taux de compression pour le jpg) !
- Idem, dans la fonction geneMimi tu pourrais passer le nom désiré pour le fichier (optionnel). Ca permettrai de donner un nom précis (ex : identifiant de base de donnée)

Seul truc ... (test de disponibilité du nom ) 1 seule ligne, et évite les accolades :
$this->iname = $fonly.$i.'.'.$this->tfile;

Continue comme ça !
Rejoignez-nous