Re: site web de photos

Page principale

Répondre à ce message
Auteur: Marc TERRIER
Date:  
À: guilde
Sujet: Re: site web de photos
Bonjour Anne,

Toutes mes condoléances.

Il se trouve que j'ai récemment eu un besoin similaire, pour diffuser
des photos de mariage, et voici comment je m'y suis pris : j'ai utilisé
ImageMagick pour réduire la taille des photos, et Galleriffic, une
librarie jQuery sous licence Creative Commons, qui permet de faire des
pages web semi-automatiquement à partir d'un stock de photos, plus un
script écrit pour l'occasion, pour automatiser tout ça.

Mes photos s'appellent toutes IMG_xxxx.JPG, donc il faudra probablement
adapter à ton cas personnel. Le script s'appelle process.sh (cf. PJ). Il
prend en entrée un fichier texte (ici, people.txt), qui comporte le
numéro de chaque photo et un descriptif de quelques mots. Tu peux lancer
le script autant de fois que tu veux, il ne traite que les fichiers qui
n'ont pas déjà été traités.

Le fichier index1.html est statique et contient le haut de page, le
index3.html est statique et contient le bas de page, et le index2.html
est dynamique (généré par le script) et contient le milieu de page. Une
fois que c'est fait, tu "uploades" sur ton serveur le index.html qui
résulte de la concaténation des fichiers ci-dessus, et le contenu des
répertoires ./large, ./small et ./thumb.

N.B. : le script ne prétend pas être optimal dans son utilisation
d'ImageMagick (j'ai découvert des astuces depuis, que je n'ai pas encore
intégrées dedans), mais il fait ce pour quoi il a été écrit, donc
pas-taper-merci.

Voili-voilà, j'espère que ça pourra t'être utile. Adapte le truc à ton
besoin, à tes souhaits, c'est libre.

--
Marc

Le 23/09/2016 à 13:32, anne.guilde@??? a écrit :
> bonjour,
>
> Ma mère est décédée et j'ai pris plein de photos d'objets et de meubles
> pour qu'on se partage avant de vendre l'appartement.
>
> J'ai mon propre serveur à la maison.
>
> J'aimerais faire un site web pour que toutes les personnes puissent
> choisir à distance les objets.
>
> Mon premier problème est le poids des photos : plus de 2 mo par photo.
> A distance cela ne va pas être génial pour visualiser.
> Le chargement de toutes ces photos va être pénible.
>
> Auriez-vous une solution pour alléger ces photos?
>
> Y-a-t-il un logiciel que je pourrais utiliser pour afficher toutes ces
> photos?
>
> Merci
> Anne
>

6687    Yves
6691    Agnès et Richard
6692    Michel et Jacqueline
6700    La Dodoche
6707    Guillaume
6712    Départ de la mairie en Dodoche (1)
6713    Départ de la mairie en Dodoche (2)
#!/bin/bash

if [ ! -d "large" ] ; then
mkdir large
fi

if [ ! -d "small" ] ; then
mkdir small
fi

if [ ! -d "thumb" ] ; then
mkdir thumb
fi

watermark="false"

if [ -f "index-2.html" ] ; then
rm index-2.html
fi

while read line ; do

number=`echo $line | awk '{ print $1 }'`
names=`echo $line | awk '{ for (i=2;i<NF;i++) { printf "%s ",$i }; printf $NF }'`

FullSizeImageName="IMG_"$number".JPG"

LargeImageName="IMG_"$number"_LARGE.JPG"
SmallImageName="IMG_"$number"_SMALL.JPG"
ThumbImageName="IMG_"$number"_THUMB.JPG"

  if [ ! -f "$FullSizeImageName" ] ; then
    echo "File $FullSizeImageName not found"
  else


    ImageSize=`identify $FullSizeImageName | awk '{ print $3 }'`


    ImageWidth=`echo $ImageSize  | awk -Fx '{ print $1 }'`
    ImageHeight=`echo $ImageSize | awk -Fx '{ print $2 }'`


    if [ ! -f "./large/$LargeImageName" ] ; then


      if [ $ImageWidth -gt $ImageHeight ] ; then
        convert $FullSizeImageName -resize 1500x1000 /tmp/temp$$
      else
        convert $FullSizeImageName -resize 1000x1500 /tmp/temp$$
      fi


      if [ "$watermark" = "true" ] ; then
        composite -compose multiply -gravity SouthEast -geometry +30+30 \
         watermark450x50.png /tmp/temp$$ ./large/$LargeImageName
      else
        mv /tmp/temp$$ ./large/$LargeImageName
      fi


      echo ./large/$LargeImageName" created"


    else echo "$FullSizeImageName already processed"


    fi


    if [ ! -f "./small/$SmallImageName" ] ; then


      if [ $ImageWidth -gt $ImageHeight ] ; then
        convert $FullSizeImageName -resize 500x333 ./small/$SmallImageName
      else
        convert $FullSizeImageName -resize 333x500 ./small/$SmallImageName
      fi


      echo ./small/$SmallImageName" created"


    fi


    if [ ! -f "./thumb/$ThumbImageName" ] ; then


      if [ $ImageWidth -eq 3456 ] && [ $ImageHeight -eq 5184 ] ; then
        # Photo de taille standard, format portrait
        convert $FullSizeImageName -resize 2% /tmp/temp$$
      elif [ $ImageWidth -eq 5184 ] && [ $ImageHeight -eq 3456 ] ; then
        # Photo de taille standard, format paysage
        convert $FullSizeImageName -resize 2% /tmp/temp$$
      elif [ $ImageWidth -lt $ImageHeight ] ; then
        # Cas particulier des images en format portrait, qui suite à un
        # recadrage, se retrouvent avec des dimensions non standard, ce
        # qui donnerait une miniature un peu trop petite si on les 
        # redimensionnait à 2% comme toutes les autres
        convert $FullSizeImageName -resize 69x104 /tmp/temp$$
      else
        convert $FullSizeImageName -resize 104x69 /tmp/temp$$
      fi


      convert /tmp/temp$$ -gravity center -extent 120x120 ./thumb/$ThumbImageName


      echo ./thumb/$ThumbImageName" created"
    fi


    echo "    <li>" >> index-2.html
    echo "     <a class=\"thumb\" name=\"IMG_"$number"\" " \
     "href=\"./small/IMG_"$number"_SMALL.JPG\" title=\""$names"\">" >> index-2.html
    echo "      <img src=\"./thumb/IMG_"$number"_THUMB.JPG\" alt=\""$names"\" />" >> index-2.html
      echo "     </a>" >> index-2.html
    echo "     <div class=\"caption\">" >> index-2.html
      echo "     <div class=\"download\">" >> index-2.html
      echo "      <a href=\"./large/IMG_"$number"_LARGE.JPG\">Grand format</a>" >> index-2.html
      echo "     </div>" >> index-2.html
      echo "     <div class=\"image-title\">"$names"</div>" >> index-2.html
      echo "     <div class=\"image-desc\">IMG_"$number"</div>" >> index-2.html
      echo "     </div>" >> index-2.html
      echo "    </li>" >> index-2.html
      echo " " >> index-2.html


fi

done < people.txt

if [ -f /tmp/temp$$ ] ; then
rm -f /tmp/temp$$
fi

cat index-1.html index-2.html index-3.html >index.html
echo "index.html generated"