TIMBRE EN PORTRAIT OU EN PAYSAGE
TIMBRE EN PORTRAIT OU EN PAYSAGE
Techniques SPIP

Vous trouverez ici des trucs et astuces destinés aux développeurs de sites sous SPIP.

La majorité de ces trucs est consacrée aux filtres graphiques introduits dans SPIP 1.9. Il y a là en effet un vaste champ d’expérimentation pour les webmestres et les graphistes.

Chaque truc est suivi d’un forum auquel nous vous invitons à participer.

N.B. La présence de ces trucs et astuces sur notre site professionnel est destinée à faire connaître notre activité de création de sites sous SPIP. Vous pouvez librement utiliser les morceaux de code fournis ici dans vos propres squelettes. Vous pouvez reprendre ces exemples sur votre site ou dans les forums d’un autre site ; dans ce cas, nous vous demandons simplement d’avoir la courtoisie de référencer la page d’où est tiré le code repris.

XML

[SPIP 1.8] La technique du timbre, telle que nous l’avons exposée précédemment, fonctionne très bien à la condition que toutes les images ainsi manipulées soient en format « paysage », c’est-à-dire plus larges que hautes. En effet, notre « timbre-masque » étant lui-même plus large que haut, si on découpe une image ayant des proportions très différentes, on risque des découpes désastreuses.

Par exemple, sur une image verticale, on obtient ceci :

La technique suivante consiste à déterminer, directement avec une boucle SPIP (c’est-à-dire sans ajouter de code PHP), si une image est verticale ou horizontale (portait ou paysage).

Commençons par une boucle qui affichera des informations sur les images jointes à un article :

Cela affiche, dans notre cas :

  • IMG/jpg/DSC02185_1.jpg - largeur : 600 - hauteur : 900
  • IMG/jpg/DSC00399.jpg - largeur : 900 - hauteur : 676
  • IMG/jpg/DSC02139_1.jpg - largeur : 900 - hauteur : 675

Nous avons donc des valeurs SPIP, #LARGEUR et #HAUTEUR, qui affichent les dimensions d’une image.

Avec le nouveau moteur de la version 1.8, il est possible d’utiliser ces balises SPIP comme critères de sélection des boucles.

Nous allons donc, à l’intérieur de notre BOUCLE_doc, ajouter une boucle de contrôle, c’est-à-dire une boucle qui affiche l’élément déjà sélectionné, en ajoutant un critère supplémentaire.

La premier argument de cette nouvelle boucle, {id_document}, sélectionne le document qui est déjà sélectionné. Le second argument, {largeur>#HAUTEUR}, permet de dire :
— nous voulons le document actuel,
— nous voulons ce document s’il a une largeur supérieure à la #HAUTEUR de la boucle précédente ; or, la #HAUTEUR de la boucle dans laquelle nous nous trouvons, c’est déjà celle du document !

La partie alternative de la boucle signifie que, si la largeur n’est pas supérieure à la #HAUTEUR, alors nous affichons un autre texte.

  • IMG/jpg/DSC02185_1.jpg - largeur : 600 - hauteur : 900 Plus haut que large
  • IMG/jpg/DSC00399.jpg - largeur : 900 - hauteur : 676 Plus large que haut
  • IMG/jpg/DSC02139_1.jpg - largeur : 900 - hauteur : 675 Plus large que haut

Cette technique peut se révéler utile pour gérer des différences subtiles d’habillage selon les dimensions de logos ou d’images de portfolio.

Dans notre cas, nous allons simplement l’appliquer à notre technique du timbre. À partir d’ici, il faut SPIP 1.9 et GD2.

En plus de notre masque timbre-horizontal.png, nous ajoutons un autre masque, vertical (portrait), timbre-vertical.png.

PNG - 6.2 ko
timbre-horizontal.png
(Si vous utilisez ce fichier, pensez à le renommer.)
PNG - 6.6 ko
timbre-vertical.png

Et réunissons les deux techniques :

Le résultat est alors :

Septembre 2006
Timbre en portrait ou en paysage
Jnelk (jnelkaston chez yahoo.fr)

Bonjour, bravo pour ce site d’une grande richesse et doté, chose rare, d’une immense pédagogie. Dans mon cas, le timbre horizontal fonctionne parfaitement mais le timbre vertical est moins réussi : j’ai l’impression que mon image (qui est bien un portrait) vient se caler complètement en bas à droite du masque (image_masque timbre-vertical.png - sans rotation ni réduction) et cache alors les nervures du bas et de droite...

Votre message :
Un message, un commentaire ?

(Pour créer des paragraphes, laissez simplement des lignes vides.)

Qui êtes-vous ? (optionnel)