Auto_thumb: minitaille sans maxiAïe (v1.1)

Bon, malgré la qualité des fonctions que je ponds au sein de cette série des auto_, dont mes copains commentateurs dénoncent régulièrement la médiocrité

salut les gars ! je déconne hein ^o^

 \o\  /o/ \o\  /o/

je persiste et je m'obstine ;)

Je me suis amusé à faire une fonction qui génère une miniature de l'image dont on lui fournit le chemin. 

Si la miniature existe déjà, elle n'est pas régénérée

 

 


[Edit du 29/10/2012]

J'ai effectué des corrections (suggérées par JérômeJ) et j'ai ajouté une sécurité pour éviter de planter apache si les images et leurs miniatures se trouvent dans le même dossier et qu'on fait connement un foreach (image) :

on faisait des miniatures de miniatures de miniatures etc...

Auto_thumb détectera l'argument $add_to_thumb_filename (par défaut _THUMB_) et renverra false (on se retrouve simplement avec une image vide.)

 

Je réfléchis maintenant à une ou deux amélioration possible:

  • permettre la génération par auto_thumb de la balise <img> ('customisable) et/ou du lien (lui aussi customisable), ce qui permettrait dans le cas précédent de ne simplement rien renvoyer (plus clean, les test se feraient à l'interne)
  • ajouter une fonction qui génère directement une galerie à partir des images d'un dossier

 

 

Il suffit d'inclure auto_thumb dans la page et d'appeler la fonction eponyme en lui fournissant le chemin vers l'image ainsi que les dimensions de l'image à générer.

 

Dans la page de démo, j'ai mis deux exemples d'utilisation;

l'intégration au sein d'une balise img:

<img src="http://www.warriordudimanche.net/<?php echo auto_thumb('i/image2.png',50,50); ?>" />

 

ou la génération de cette balise dans une boucle, pour une galerie par exemple:

for ($n=1 ; $n<10 ; $n++){                   
    echo "<div class='photo'><a href='http://www.warriordudimanche.net/$n.jpg' target='_BLANK'><img src='http://www.warriordudimanche.net/".auto_thumb('i/'.$n.'.jpg',139,139)."' alt='$n.jpg'/></a></div>";
}

On peut ajouter un tag au fichier thumb généré (_THUMB_ par défaut) afin de pouvoir différencier les miniatures des fichiers images d'origine: c'est très utile dans une gallerie dont l'affichage se fait via un foreach si on veut éviter un plantage du serveur (si on ajoute des fichiers images au fur et à mesure qu'on les traite, il fait "pouf c'est tout")

En allant sur la page de démo, les miniatures précédemment générées sont détruites pour voir la différence entre le temps de génération et l'accès simple aux miniatures.

Si quelqu'un veut récupérer le php, le voilà ...

 

 

un truc que tu ferais si tu voulais me faire plaisir, c'est d'arrêter DEFINITIVEMENT les jeux de mot en peau de zob...

Parle-lui aussi des fonctions: faut qu'il arrête ça aussi, sans déconner !

 

Bon, alors déjà, il n'est jamais entré dans mes intentions de faire plaisir à des types qui n'interviennent que pour m'envoyer des fions. Et d'une.
J'ajouterai de surcroît que si je ne postais pas ces fonctions ici, personne n'aurait eu la gentillesse de les commenter pour me montrer comment les améliorer.

❝ 15 commentaires ❞

1  Plarem le

C'est propre et simple !
Il faut juste préciser qu'il faut avoir la lib GD d'activer dans PHP. ;)

 
2  Bronco le

Merci
En effet, il faut GD, voilà qui est précisé

 
3  JeromeJ le



  1. Tu pourrais nous faire une rubrique AUTO_* pour tous les unir ? :p
    Si tu fais ça, ya beaucoup de chance que je te link … (on verra hein :)) c'est le genre de truc tout con qui sauve le monde ( http://sebsauvage.net/rhaa/index.php?2011/03/17/14/23/36-publiez-vos-bouts-de-code )




  2. J'ai appris un nouveau mot aujourd'hui éponyme.




  3. C'est toujours sympa les fonctions qu'on peut utiliser de façon transparente et c'est elle qui gère si elle doit créer des choses ou pas :) nous on s'en tape.




  4. Yeah, dans ta page d'exemple j'ai réussi à générer les miniatures en -0.644106s \o/ J'ai réussi 2 fois.




  5. Tu devrais rajouter .jpeg en plus de .jpg dans ta variable $motif :
    $motif='#(.jpg|.png|.gif)#';
    ->
    $motif='#.jpe?g|.png|.gif#';




  6. De plus les parenthèses capturantes ne servent à rien si elles englobent tout, dans ce cas, il suffit d'utiliser $0 (l'ensemble de la capture) au lieu de $1 (le contenu de la première parenthèse capturante) dans $rempl.




  7. (Soit dit en passant, ça peut intéresser, au niveau performance, quand on a besoin d'utiliser des parenthèses pour quantifier un groupe avec des "|" dedans mais qu'on s'en fout de la récup en tant que variables $1, … il faut rajouter ?: à l'intérieur de la parenthèse au début ;) ainsi : #hel(?:lo|p)#)




Du coup ta regex pourrait être $motif = '#.(?:jpe?g|png|gif)#';




  1. Oh et tu devrais mettre l'option "i" sur ta regex non? :p (insensible à la casse)
    $motif = '#.(?:jpe?g|png|gif)#i';




  2. Urh urh durr durr, pourquoi tu n'utilises pas les fonctions php prête à l'emploi pour récupérer l'extension du fichier ? :p http://fr.php.net/manual/fr/function.pathinfo.php




La librairie PHP est un vrai bordel, faut être chanceux pour connaitre les fonctions qui font tout et pas passer son temps à les recoder.



  1. Quitte à utiliser substr, tu peux faire ça (un peu comme en Python) : $ext = substr($img, -4);
    Mais bon si on prend aussi .jpeg en compte, ça foire un ptit peu vu que cette extension est plus longue que les autres :)


Comme alternative, il y avait aussi http://www.php.net/manual/fr/function.strrchr.php




  1. Surtout que ta ligne 39 (la ligne suivante) écrase immédiatement $ext, non ?




  2. Ràv mais je te conseillerais d'utiliser une taille en em plutôt qu'en px pour .plettrine:first-letter ainsi ça s'adapterait automatiquement si tu modif la taille de la police (environ 3.5em pour simuler les 60px actuels) (j'étais sûr de pouvoir retrouver un article là dessus sur lehollandaisvolant.net mais en vain … <.< en gros 1em c'est la taille d'une ligne peut importe sa taille, c'est plus flexible que de travailler avec des px)




  3. Puis ton margin-top: -5px sur .plettrine:first-letter c'est moche sous Firefox :( chicane http://img694.imageshack.us/img694/7681/graphicbugfirefoxfirstl.png (mais ça rend plus joli sous Chrome, c'était surement ton but)




  4. Et tant que je suis dans les chicaneries (en espérant que ça intéresse, sinon too late anyway :p), normalement en français faut des espaces insécables (Alt+0160 sous win) avant ":", "?" et "!" (Et même qu'en anglais faut pas d'espace du tout :|)




  5. Encore un HS sadique pour te rajouter du boulot (si t'as le temps et que l'envie te prend)  : quelques balises de formatages pour les commentaires ne seraient pas de refus (les bases : italique, gras, souligné et, fantasmons !, des trucs high-tech genre une balise code :p (j'utilise geshi pour mes colorations syntaxiques perso, c'est quoi toi ? sa tête me dit qqchose mais c'est ptet qu'une impression)




  6. Heeey d'où vient que je peux pas agrandir le textarea pour écrire le commentaire comme bon me semble ?!




Qu'on me corrige quand je me trompe :p c'est cool.

 
4  JeromeJ le

Je devrais peut-être songer à faire des commentaires plus courts …

 
5  Bronco le

@JeromeJ :Ahhh, un peu de lecture




  1. En effet, je pense que ça va rapidement s'imposer




  2. oui, il est chouette, hein ?!




  3. Exactement l'esprit du bouzin zero prise de tête à l'utilisation. En fait, l'idée m'est venue à force de galérer pour réutiliser des portions de codes que j'avais réalisées pour résoudre des difficultés... après 15 jours sans mettre le nez dedans, j'avais oublié...




  4. Encore bravo







      1. J'ignorais tout cela je m'y colle dès la sieste des enfants






  5. en effet, c'est un oubli de ma part...




  6. hinhinhin, ça m'arrive tellement souvent que j'ai même mis une quote en haut, dans le header, à ce sujet (+1 pour la remarque sur php: j'en suis même à vérifier la liste entière des fonctions php avant de lancer intype ou netbeans )




  7. je le note derechef




  8. faut que je relise, mais c'est possible (un copier coller malheureux, sans doute.)




  9. oui, c'est vrai même si certains préconisent le contraire (http://www.noupe.com/css/15-css-habits-to-develop-for-frustration-free-coding.html)
    Sur cette même page, on trouve même un truc pour avoir un peu les avantages des deux: body { font-size: 62.5% } et du coup 1em = 10px.




  10. Vrai pour ! et ? mais les : et ;, la règle uniformisée est plutôt pas d'espace avant, un espace après (normalement, c'était un avant et un après pour les signes doubles et aucun avant et un après pour les signes simples)




  11. Oui ça s'impose également: à ma décharge, je n'avais pas prévu de tels volumes dans les commentaires La coloration Syntaxique c'est SyntaxHighlighter (dans le plugin CKeditor de pluxml)




  12. hahaha: t'as Chrome, toi hinhinhin un petit resize:none et paf! Te voilà pieds et poings liés



 
6  JeromeJ le



  1. Aaah intéressant, merci !




  2. J'sais pas :p c'est Libre Office qui me rajoute toujours ce joli espace insécable avant les ":" (ainsi que d'autres trucs, du coup j'en met partout <.<)




  3. Ça me fait ça sous Firefox, Chromium et Opera :o




C'est vraiment pas bien ce que tu fais là :(
Mais je viens de comprendre pourquoi tu l'as désactivé, car ton background est un faux non extensible :p (du coup ça rend tout moche) baaah
Y aurait ptet moyen de faire ça avec des bords arrondis & co ??

 
7  Bronco le

@JeromeJ :
hinhin en effet. Je sais, je suis impitoyable Je pense qu'on pourrait faire entièrement avec css, mais j'étais pressé de sortir wdd, j'ai paré... ;)

 
8  JeromeJ le

Le résultat est pas mal pour un truc "pressé" :o


HS: Tchu, encore la 5ème lettre du mot, ça m'dépasse :|

 
9  JeromeJ le

Ah chouette un menu rien que pour les AUTO_* :D c'est bon ça


HS: Raah, jamais 2 sans 3 qu'ils disent :( le captcha me teste >.<

 
10  JeromeJ le

Bon bah du coup, j'suis entrain de rédiger (et j'essayerais de pas l'entamer et ne jamais le finir comme beaucoup d'autres) un ptit article sur la sécurité/liberté où j'vais link tes programmes entres autres :)


Bah oui car les KISS c'est juste aussi indispensable que le reste (et hop je re-share le lien de la dernière fois. Bah oui y faut ! ) http://sebsauvage.net/rhaa/index.php?2011/03/17/14/23/36-publiez-vos-bouts-de-code


Je dirais même plus, bon bah oui ->[]

 
11  Bronco le

+1

 
12  JeromeJ le

Tiens, une petite faute s'est glissée dans ton PHP


Tu as #.(jp?g|png|gif)#i au lieu de #.(jpe?g|png|gif)#i ;)

 
13  Bronco le

@JeromeJ :
hinhinhin, je sens qu'elle te fait un peu plaisir celle-là, avoue !
Je corrige


Mais, au fait, c'est toi qui m'as filé cette correction (bon c'est vrai qu'elle était sans doute correcte à ce moment-là )

 
14  cartes de voeux de qualité le

Salut!


Ma petite soeur me demande ou vous avez fait faire le logo de votre site, je sais que c'est un peu hors-sujet mais je transmet ;-)

 
15  Bronco le

@cartes de voeux de qualité :
Pourquoi la petite soeur en question ne fait-elle pas sa demande elle-même? vous le saurez au prochain épisode... (quel suspens !)

 

Fil RSS des commentaires de cet article

✍ Écrire un commentaire

les commentaires relevant du SPAM seront filtrés et dégagés direct...

Quelle est le dernier caractère du mot 6ceuqh ?