User Tools

Site Tools


Sidebar

documentation:programmation:bash:galerie

Table of Contents

Galerie

Ce script n'est plus maintenu et comporte quelques soucis notamment sur la gestion des portraits.

Un autre script graphique (utilisant kdialog) sera mis en ligne sous peu.

Introduction

Voici un script écrit en bash qui me permet de redimensionner l'ensemble des photos d'un dossier dans le but de les déposer sur ma galerie.
Le script créé 3 images :

  • une miniature (affichée sur la galerie)
  • une image en 800×600 pour être affichée sur un forum par exemple (en conservant le ratio)
  • et une version “HD” en 1600×1200 (en conservant le ratio)

De plus il permet d'apposer sur chaque image (version forum / hd ) une bordure.

Code

#! /bin/bash
 
# Première étape : vérifier si les dossiers miniatures existes
if [ ! -d .thumbs ] ; then
        mkdir .thumbs
fi
if [ ! -d .medium ] ; then
        mkdir .medium
fi
 
# Tailles des images
HD_L="1600"
HD_H="1200"
MED_L="800"
MED_H="600"
 
# Dossier contenant les bordures
TPL_DIR="/home/dbroqua/Template/"
TPL_NAME="clio_border_"
TPL_EXT=".png"
 
# Liste des styles
RED="\E[31m"
BLUE="\E[44m"
BOLD="\033[4m"
RESET="\033[0m"
 
for file in *.*; do
        # Le fichier existe déjà et l'option --force n'est pas passée, on passe alors au fichiers suivant sans traiter celui ci
        if [ -f ./.thumbs/${file} ] && [ ! "$1" = "--force" ] ; then
                echo -e "${RED}Le fichier ${BOLD}$file${RESET}${RED} existe${RESET}"
        else
                extension=`echo "$file"|awk -F . '{print $NF}' `
                base=`basename $file .${extension}`
                echo -e "${BLUE}Traitement de $file${RESET}"
                if [ "$extension" == "wmv" ] || [ "$extension" == "mp4" ] || [ "$extension" == "avi" ] || [ "$extension" == "3gp" ] ; then
                        ffmpeg  -itsoffset -4  -i ${file} -vcodec mjpeg -vframes 1 -an -f rawvideo -s 400x300 .medium/${base}.jpg
                        convert -resize 100x80 .medium/${base}.jpg .thumbs/${base}.jpg
                        #génération du flv
                        ffmpeg -i ${file} -f flv -acodec libmp3lame  -ab 196 -r 25 -b 400 -s 640x480 ${base}.flv
 
                else
			# Gestion d'une image
			LARGEUR=`identify -format "%[fx:w]" ${file}`
			HAUTEUR=`identify -format "%[fx:h]" ${file}`
			# L'image est en portrait OU paysage
			if [ ${LARGEUR} -ge ${HAUTEUR} ] ; then
				# Paysage
				IMG_HD_L=${HD_L}
				IMG_HD_H=$(($HAUTEUR*${IMG_HD_L}/${LARGEUR}+1))
 
				IMG_MED_L=${MED_L}
				IMG_MED_H=$(($HAUTEUR*${IMG_MED_L}/${LARGEUR}+1))
			else
				# Portrait
				echo "Portrait"
			fi
 
			# Création de la miniature
			echo -e "  ${BLUE}Création de la miniature${RESET}"
			convert -resize 100x80 ${file} .thumbs/${file}
			# Création de la version médium
			echo -e "  ${BLUE}Création de l'image affichage sur site${RESET}"
			convert -resize ${IMG_MED_L}x${IMG_MED_H} ${file} .medium/${file}
			convert -page +0+0 .medium/${file} -page +0+0 ${TPL_DIR}${TPL_NAME}${IMG_MED_L}x${IMG_MED_H}${TPL_EXT} -layers merge  +repage .medium/${file}
			# Redimensionnement de la version HD pour gagner en place
			echo -e "  ${BLUE}Création de la version HD${RESET}"
			convert -resize ${IMG_HD_L}x${IMG_HD_H} ${file} ${file}
			convert -page +0+0 ${file} -page +0+0 ${TPL_DIR}${TPL_NAME}${IMG_HD_L}x${IMG_HD_H}${TPL_EXT} -layers merge +repage ${file}
			echo -e " "
                fi
        fi
done
documentation/programmation/bash/galerie.txt · Last modified: 2017/07/14 19:45 (external edit)