i vecchi libri sono una mia passione e visito spesso i vari sii di biblioteche digitali
succede però che, per fare prima, alcuni scansionino i libri a doppia facciata
come fare per tagliare queste immagini a metà così da ottenere pagine singole ed in maniera automatica?
la mia risposta è stata questo script (che funziona ottimamente)
#!/bin/sh
if [ ! -e even-odd ]; then mkdir even-odd; fi
first="`ls -1 *.jpg | head -n1`"
let "halfwidth=`gm identify -format '%w \n' "$first"`/2"
width="`gm identify -format '%w \n' "$first"`"
height="`gm identify -format '%h \n' "$first"`"
for FILE in *.jpg ; do gm convert -crop "$halfwidth"x"$height"+0+0 "$FILE" "$FILE-A.jpg" ; mv `ls *.jpg | grep A` even-odd ; gm convert -crop "$width"x"$height"+"$halfwidth"+0 "$FILE" "$FILE-B.jpg" && mv `ls *.jpg | grep B` even-odd
done ;
che rileva in automatico le dimensioni delle scansioni a doppia facciata dalla prima immagine della serie, poi le taglia a metà, posponendo alle pagine dispari una A e alle pari una B, cosicché, il loro ordine di successione sia quello giunto (prima la dispari e poi la pari, e siccome A viene prima di B, l'ordinamento sarà quello giusto)
però così si è pur sempre costretti ad immettere manualmente l'0estensione del file, se si tratta di formati diversi dal jpg
ho allora cercato di far rilevare anche l'estensione dei file che ci si ritrova ad avere
implementandolo come variabile
ext="`ls | grep -e .bmp -e gif -e pbm -e .png -e pnm -e ppm -e tif -e tiff| head -n1 | cut -d . -f 2`"
se infatti avete in unacartella una o più immagini jpg, gif, png ecc... se digitate:
ext="`ls | grep -e .bmp -e gif -e pbm -e .png -e pnm -e ppm -e tif -e tiff| head -n1 | cut -d . -f 2`" && echo ".$ext
vi sarà restituita l'estensione a partire dal punto
ho altresì modificato la variable first:
first="`ls | grep '.bmp\|.gif\|.pbm\|.png\|.pnm\|.ppm\|.tif\|.tiff' | head -n1`"
o anche (con egrep)
first="`ls | egrep '(*.bmp|*.gif|*.jpg|*.png|*.tif|*.tiff)' | head -n1`"
per ottenere che data una lista di possibili estensioni (le più comuni per i formati grafici), venisse individuata la prima immagine della serie così da calcolarne poi le dimensioni
ma (e lo coloro in rosso per segnalare che mi dà errore) ci deve essere qualcosa che mi sfugge nell'ultima parte
#!/bin/sh
if [ ! -e even-odd ]; then mkdir even-odd; fi
first="`ls | grep '.bmp\|.gif\|.pbm\|.png\|.pnm\|.ppm\|.tif\|.tiff' | head -n1`"
ext="`ls | grep -e .bmp -e gif -e pbm -e .png -e pnm -e ppm -e tif -e tiff| head -n1`"
let "halfwidth=`gm identify -format '%w \n' "$first"`/2"
width="`gm identify -format '%w \n' "$first"`"
height="`gm identify -format '%h \n' "$first"`"
for FILE in "$ext" ; do gm convert -crop "$halfwidth"x"$height"+0+0 "$FILE" "$FILE-A"$ext"" && mv `ls "$ext" | grep A` even-odd ; gm convert -crop "$width"x"$height"+"$halfwidth"+0 "$FILE" "$FILE-B"$ext"" && mv `ls "$ext" | grep B` even-odd
done ;