Tild > Online Software
rechercher :

Une mosaïc avec Bash et ImageMagick

Pour rassembler des centaines de petites images dans une (ou plusieurs) mosaïc les représentant toutes, on peut utiliser l’utilitaire génial ImageMagick.

Bash permet dans un premier temps de faire un crop sur les images de façon à ne récupérer qu’une partie de celle-ci et les stocke dans un repertoire temporaire.

Ensuite ImageMagick récupère toutes les images et créée une mosaïc.


#!/bin/bash
#
#

FINALDIR="./cheminversmosaics/"

function usage
{
echo "Usage :"
echo " `basename $0` Path of the jpg files"
echo
}

function crop()
{
convert $1 -crop 150x150+$2+$3 $4/tmp/`basename $1`
return 0
}

if [ $# != 1 -o "$1" = "--help" ]
then
usage
exit
fi

mkdir ./$1/tmp
echo "Create Mosaic for $1"

for i in `ls $1/*.jpg`
do
size=`identify -format "%wx%h" $i`
if [ "$size" = "190x229" ]; then
crop $i 1 53 $1;
fi
done

#mosaic de 9 images x 11 images
mosaic=0
row=0
col=0
for i in `ls $1/tmp/*.jpg`
do
if [ $col -eq 0 ]; then
if [ $row -eq 0 ]; then
let "mosaic += 1"
mosaicFile="$FINALDIR/`basename $1`.$mosaic.jpg"
composite=""
fi
fi

let "posx=$col*150"
let "posy=$row*150"

composite="$composite -page 150x150+$posx+$posy $i"

if [ $col -ge 8 ]; then
if [ $row -ge 10 ]; then
row=0
col=0
convert $composite -background wheat -mosaic $mosaicFile
echo ".... write $mosaicFile"
else
let "row += 1"
col=0
fi
else
let "col += 1"
fi
done

convert $composite -background wheat -mosaic $mosaicFile
echo ".... write $mosaicFile and ending"

rm -rf ./$1/tmp

Leave a Reply