Jste zde: kle.cz » Linux » Skripty » fotak2web.sh
Jednoduchý skript pro generování galerií. Obrázky zmenší, podle exif údajů otočí a označí datem.
#!/bin/bash
echo -n "Název galerie: "
read TITLE
TMP=/tmp
PID=$$
OUT=$TMP/$PID
IMG=$OUT/img
IMGTN=$IMG/tn
HTML=$OUT/html
EXIF=$OUT/exif
IN=$1
mkdir $OUT
mkdir $IMG
mkdir $IMGTN
mkdir $HTML
mkdir $EXIF
echo "$IN -> $OUT"
CISLO=0
for foo in $IN/*.JPG
do
HCISLO=`printf "%4d" $CISLO | sed -e 's/ /0/g'`
identify -verbose "$foo" > $EXIF/$HCISLO.text
ROTATION=""
grep "Orientation: 6" $EXIF/$HCISLO.text &>/dev/null && ROTATION=" -rotate 90 "
grep "Orientation: 8" $EXIF/$HCISLO.text &>/dev/null && ROTATION=" -rotate -90 "
convert -resize 800x600 +profile '*' $ROTATION -depth 8 "$foo" $IMG/$HCISLO.jpg
convert -resize 128x96 +profile '*' $ROTATION -depth 8 "$foo" $IMGTN/$HCISLO.jpg
let CISLO++
done
CISLO=0
echo "<html>
<head>
<meta http-equiv=\"content-type\" content=\"text/html; charset=iso-8859-2\" />
<title>$TITLE</title>
<link rel=\"stylesheet\" href=\"galerie.css\" type=\"text/css\" />
</head>
<body>
<h1>$TITLE</h1>
" > $OUT/index.html
for foo in $IMG/*.jpg
do
HCISLO=`basename $foo .jpg`
PREV=`expr $CISLO - 1`
PREV=`printf "%4d" $PREV | sed -e 's/ /0/g'`
NEXT=`expr $CISLO + 1`
NEXT=`printf "%4d" $NEXT | sed -e 's/ /0/g'`
if grep "Orientation: 1" $EXIF/$HCISLO.text &>/dev/null
then
CLASS="ls"
else
CLASS="pt"
fi
DATE="`grep "Date Time:" $EXIF/$HCISLO.text | cut -d" " -f7,8 | cut -d"." -f1`"
echo "<html>
<head>
<meta http-equiv=\"content-type\" content=\"text/html; charset=iso-8859-2\" />
<title>$TITLE - obrázek $HCISLO.jpg</title>
<link rel=\"stylesheet\" href=\"../galerie.css\" type=\"text/css\" />
</head>
<body>
<h1>$TITLE</h1>" > $HTML/$HCISLO.html
[ -f $IMG/$PREV.jpg ] && echo "<div class=\"navigace\"><a href=\"$PREV.html\" \
title=\"předchozí obrázek\"><< předchozí obrázek</a> | " >> $HTML/$HCISLO.html
echo "<a href=\"..\" title=\"Stránka s náhledy\">seznam obrázků</a>" >> $HTML/$HCISLO.html
[ -f $IMG/$NEXT.jpg ] && echo "| <a href=\"$NEXT.html\" \
title=\"předchozí obrázek\">další obrázek >></a>" >> $HTML/$HCISLO.html
echo "</div>
<div class=\"obrazek\"><a href=\"../img/$HCISLO.jpg\" \
title=\"Samostatný obrázek\"><img src=\"../img/$HCISLO.jpg\" class=\"b$CLASS\" /></a></div>
<p>Datum a čas: $DATE<br /></p>
<hr />
</body>
</html>
" >> $HTML/$HCISLO.html
echo "<a href=\"html/$HCISLO.html\" class=\"nahled\" \
title=\"Obrázek $HCISLO.jpg v plné velikosti.\">
<img src=\"img/tn/$HCISLO.jpg\" class=\"$CLASS\" \
alt=\"$TITLE - $HCISLO.jpg\"/></a> " >> $OUT/index.html
let CISLO++
done
echo "
<br clear=\"all\" />
<p>
$CISLO obrázků
</p>
<hr />
</body>
</html>
" >> $OUT/index.html
echo "
body {
background: #eed;
color: #000;
text-align: center;
}
.nahled {
display: block;
float: left;
width: 150px;
height: 150px;
background: #fff;
border: solid 1px;
border-color: #aaa #444 #444 #aaa;
margin: 5px 10px;
}
.nahled img {
border: solid 1px;
border-color: #444 #aaa #aaa #444;
}
.ls {
margin: 28px 10px;
width: 128px;
height: 96px;
}
.pt {
margin: 12px 26px;
height: 128px;
width: 96px;
}
.obrazek {
width: 850px;
height: 850px;
background: #fff;
border: solid 1px;
border-color: #aaa #444 #444 #aaa;
margin: 0 auto 0 auto;
}
.obrazek img {
border: solid 1px;
border-color: #444 #aaa #aaa #444;
}
.bls {
margin: 120px auto 0 auto;
width: 800;
height: 600px;
}
.bpt {
margin: 20px auto 0 auto;
height: 800px;
width: 600px;
}
.navigace {
margin: 0 auto 0 auto;
padding: 5px;
}
h1 {
text-align: left;
}
p {
text-align: left;
}
" > $OUT/galerie.css
rm -rf $EXIF