genwebgallery

view genwebgallery @ 42:8f69055cf7ed

switched from convert to mogrify; added support for resize-gd
author schnalke@localhost.localdomain
date Mon, 23 Jun 2008 15:50:50 +0200
parents 8bc7566a9086
children b526a65d5066
line source
1 #!/bin/sh
2 #
3 # generates a web gallery
4 # requires: ImageMagick (mogrify)
5 # or: resize-gd
6 #
7 # meillo@marmaro.de
8 # http://prog.marmaro.de/genwebgallery
9 #
12 PROGRAM=genwebgallery
13 VERSION=0.7
15 verbose="no"
16 targetDir="webgallery"
17 overwrite="no"
18 index="index.html"
19 sizePic=800
20 sizeThumb=150
21 galleryTitle=""
22 footer=""
24 resizer=""
29 checkCreateDir() {
30 remove="no"
31 if [ -e "$targetDir" ] ; then
32 if [ "$overwrite" = "no" ] ; then
33 echo "output directory '$targetDir' already exists."
34 printf "remove it? [y/n] "
35 read remove
36 fi
38 if [ "$remove" = "y" -o "$overwrite" = "yes" ] ; then
39 echo "removing '$targetDir' ..."
40 rm -r "$targetDir"
41 if [ $? -ne 0 ] ; then
42 echo "ABORT"
43 exit 4
44 fi
45 else
46 echo "keep output directory"
47 echo "ABORT"
48 exit 3
49 fi
50 fi
52 mkdir -p "$targetDir"
53 }
58 insertHeader() {
59 echo "
60 <?xml version=\"1.0\" encoding=\"utf-8\"?>
61 <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"
62 \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">
63 <html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">
64 <head>
65 <title>$titleName</title>
66 <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
67 <meta name=\"Generator\" content=\"genwebgallery - http://prog.marmaro.de/genwebgallery\" />
68 </head>
69 <body>
71 "
72 }
76 insertFooter() {
77 echo "
79 </body>
80 </html>
81 "
82 }
86 log() {
87 if [ $verbose = "yes" ] ; then
88 echo "$1";
89 fi
90 }
94 checkResizer() {
95 log "checking resize program installation"
96 if [ `command -v mogrify` ] ; then
97 log "Found 'mogrify':"
98 log "`mogrify -version`"
99 resizer="mogrify"
100 elif [ `command -v resize-gd` ] ; then
101 log "Found 'resize-gd':"
102 log "`resize-gd --version`"
103 resizer="resize-gd"
104 else
105 echo "Found neither 'mogrify' (package imagemagick) nor 'resize-gd'."
106 echo "ABORT"
107 exit 2
108 fi
109 }
112 # call with: resize <size> <file>
113 resize() {
114 if [ "$resizer" = "mogrify" ] ; then
115 mogrify -resize "${1}x${1}" "$2"
116 elif [ "$resizer" = "resize-gd" ] ; then
117 resize-gd "$1" "$2"
118 else
119 echo "No resize program available."
120 echo "It's probably a program bug if you see this message."
121 echo "Please contact the author or maintainer (see man page)."
122 echo "ABORT"
123 exit 2
124 fi
125 return "$?"
126 }
129 usage() {
130 echo "usage: $PROGRAM [OPTIONS] PICTURES"
131 exit 1
132 }
136 help() {
137 echo "$PROGRAM
139 generates a web gallery consisting of html pages
141 usage: $PROGRAM [OPTIONS] PICTURES
143 options:
144 --version print program version
145 --help display this output
146 -v be verbose ($verbose)
147 -o DIR folder where generated files go to ($targetDir)
148 -i FILE the name of the index file ($index)
149 -t TEXT title of the gallery ($galleryTitle)
150 -f TEXT footer text ($footer)
151 -ps PIXELS size of the pictures ($sizePic)
152 -ts PIXELS size of the thumbnails ($sizeThumb)
153 --overwrite overwrite output directory ($overwrite)
155 for more information see man page: $PROGRAM(1)
157 author: meillo@marmaro.de
158 homepage: http://prog.marmaro.de/genwebgallery
159 "
160 exit 0
161 }
166 # option processing
168 while [ "$#" -ge 1 ] && [ "`echo "$1" | awk '{print substr($0,1,1)}'`" = '-' ] ; do
169 case $1 in
170 '--version')
171 echo "$PROGRAM version $VERSION"
172 exit 0
173 ;;
174 '--help')
175 help
176 ;;
177 '-v' | '--verbose')
178 verbose="yes"
179 shift
180 ;;
181 '-o' | '--output')
182 targetDir="$2"
183 shift
184 shift
185 ;;
186 '-i' | '--index')
187 index=$2
188 shift
189 shift
190 ;;
191 '-t' | '--title')
192 galleryTitle="$2"
193 shift
194 shift
195 ;;
196 '-f' | '--footer')
197 footer=$2
198 shift
199 shift
200 ;;
201 '-ps' | '--pic-size')
202 sizePic=$2
203 shift
204 shift
205 ;;
206 '-ts' | '--thumb-size')
207 sizeThumb=$2
208 shift
209 shift
210 ;;
211 '--overwrite')
212 overwrite="yes"
213 shift
214 ;;
215 *)
216 echo "invalid option: $1"
217 echo "see: $PROGRAM --help"
218 exit 1
219 esac
221 done
223 if [ $# -eq 0 ] ; then
224 usage
225 fi
229 # verbose output
230 log "verbose: $verbose"
231 log
232 log "output dir: $targetDir"
233 log "index file: $index"
234 log "gallery title: $galleryTitle"
235 log "footer text: $footer"
236 log "picture size: ${sizePic}px"
237 log "thumbnail size: ${sizeThumb}px"
238 log "overwrite output dir: $overwrite"
239 log
240 checkResizer
241 log
245 # generate web gallery
247 checkCreateDir
249 echo `insertHeader` > "$targetDir/$index"
250 if [ "$galleryTitle" != "" ] ; then
251 echo "<h1>$galleryTitle</h1>" >> "$targetDir/$index"
252 fi
254 for i in "$@" ; do
255 file="`basename $i`"
256 targetFile="$targetDir/$file.htm"
257 log "processing file: $file"
259 # copy and resize pics
260 cp "$i" "$targetDir/$file"
261 resize "$sizePic" "$targetDir/$file"
262 if [ $? -ne 0 ] ; then
263 log " skipping"
264 rm "$targetDir/$file"
265 continue
266 fi
267 cp "$i" "$targetDir/_$file"
268 resize "$sizeThumb" "$targetDir/_$file"
270 # generate pic page
271 echo `insertHeader` > "$targetFile"
272 if [ "$galleryTitle" != "" ] ; then
273 echo "<h1>$galleryTitle</h1>" >> "$targetFile"
274 fi
275 echo "<p><a href=\"$index\"><img src=\"$file\" alt=\"$file\" /></a></p>" >> "$targetFile"
276 if [ "$footer" != "" ] ; then
277 echo "<p>$footer</p>" >> "$targetFile"
278 fi
279 echo `insertFooter` >> "$targetFile"
281 # generate content for index file
282 echo " <a href=\"$file.htm\"><img src=\"_$file\" alt=\"$file\" /></a>" >> "$targetDir/$index"
283 done
285 if [ "$footer" != "" ] ; then
286 echo "<p>$footer</p>" >> "$targetDir/$index"
287 fi
288 echo `insertFooter` >> "$targetDir/$index"