Kiddo's resizing, cropping and coffee-making lightbox PHP gallery, now with more thumbnails2 min read

Après une fin de semaine d’acharnement, j’ai enfin implanté les miniatures (thumbnails) dans mon script de galerie. Ce bidule est pleinement testé, opérationnel, en démonstration dans ma galerie personnelle.

Le code est grossièrement dérivé de cet algorithme de redimensionnement et découpage d’images (avec mes améliorations pour le rendre plus clair, efficace, et me débarrasser du bug des bordures noires), quelques bouts du code de portefolio d’Aeyoll, et ma propre folie.
Le résultat est ce que je désirais avoir depuis des années: un script de galerie solide comme le roc, ultra simple d’inclusion dans un design comme le mien, avec un code plus ou moins élégant. En gros, ce que BolGallery aurait dû être s’il n’avait pas été si vieux, complexe et buggé (voire, une usine à gaz dans les versions récentes).
Les miniatures sont créées dans un sous-dossier “.thumbnails” dans l’emplacement où le script se fait appeller. Ça simplifie les choses, ça enlève de la configuration inutile, et ça garde tout (généralement) dans un seul dossier.
L’utilisation de lightbox est optionnelle (S3phy, c’est pour toi et ta connexion Internet au charbon ;), tout comme les miniatures (s’ils sont désactivés, une petite icône s’affichera comme dans la version précédente).
Le plus tordu pour moi (et ma tête de non-mathématichien) a été de réfléchir à un algorithme qui ne cause pas des “bordures noires” comme on en voit si souvent dans les scripts de galerie où il y a préservation de ratio d’aspect et taille de miniatures arbitraire. Pour m’y retrouver, j’ai fait un plan en pseudocode comme ceci:
(les nombres 1 et 2 sont des valeurs arbitraires)
grande image: 1x2
A) taille de thumbnail voulue: 2x1
B) taille de thumbnail voulue: 1x2
C) taille de thumbnail voulue: 1x1
grande image: 2x1
A) taille de thumbnail voulue: 2x1
B) taille de thumbnail voulue: 1x2
C) taille de thumbnail voulue: 1x1

Ce qui m’a amené à énoncer une “règle de fonctionnement” (le “Théorème de Jeffou” tiens): “faire en sorte que le côté le plus petit de l’image originale soit tout le temps apparié au côté le plus grand du cadre dans lequel l’image sera placée; ensuite, découper les retailles”
Ce “théorème” m’a permis de compléter les lacunes de l’algorithme de Noah Everett. J’étais heureux comme Shrödinger (et oui, c’est un garçon-chat vampire nazi quantique):

Merci à tous ceux qui m’ont donné un coup de main à me démêler et produire un truc en PHP qui, étonnamment, semble ne pas être cancérigène.


Comments

One response to “Kiddo's resizing, cropping and coffee-making lightbox PHP gallery, now with more thumbnails2 min read

  1. Aeyoll Avatar
    Aeyoll

    Ah, tu as enfin réussi, bravo 😀