5.8 网页相册生成器
Web开发人员通常都会为网站设计相册页面,这些页面上包含着多个图像缩略图。点击缩略图,就会出现一幅放大的图片。但如果需要很多图片的话,每一次都得复制
标记、调整图片大小来创建缩略图、把调整好的图片放进缩略图目录、测试链接,诸如此类的活儿实在烦琐。这些工作会花费大量时间,但都是一些简单无谓的重复。我们可以写一个脚本将这些工作步骤实现自动化处理。这样一来,创建缩略图、将缩略图放入对应的目录、生成用于
标记的代码片段都可以在短短几秒钟内自动搞定。这则攻略正是要告诉你如何实现刚才所说的一切。
5.8.1 预备知识
要完成这项任务,可以通过for
循环对当前目录下的所有图片进行迭代。这需要借助一些常见的Bash工具,如cat
和convert
。我们将用所有的图片生成一个HTML相册index.html。要使用convert
,先确保你已经安装了Imagemagick。
5.8.2 实战演练
生成HTML相册页面的Bash脚本如下:
#!/bin/bash
#文件名: generate_album.sh
#用途: 用当前目录下的图片创建相册
echo "Creating album.."
mkdir -p thumbs
cat <<EOF > index.html
<html>
<head>
<style>
body
{
width:470px;
margin:auto;
border: 1px dashed grey;
padding:10px;
}
img
{
margin:5px;
border: 1px solid black;
}
</style>
</head>
<body>
<center><h1> #Album title </h1></center>
<p>
EOF
for img in *.jpg;
do
convert "$img" -resize "100x" "thumbs/$img"
echo "<a href=\"$img\" ><img src=\"thumbs/$img\" title=\"$img\" />
</a>" >> index.html
done
cat <<EOF >> index.html
</p>
</body>
</html>
EOF
echo Album generated to index.html
运行脚本:
- $ ./generate_album.sh
- Creating album..
- Album generated to index.html
5.8.3 工作原理
脚本的起始部分用于生成HTML页面的头部。
接下来,脚本将一直到EOF的这部分内容(不包括EOF在内)重定向到index.html:
cat <<EOF > index.html
contents...
EOF
页面头部包括HTML和样式表单。
for img in *.jpg;
对每一个文件进行迭代,并执行相应的操作。
convert "$img" -resize "100x" "thumbs/$img"
将创建宽度为100px的图像缩略图。
下面的语句会生成所需的
标记并将其追加到index.html中:
echo "<a href=\"$img\" ><img src=\"thumbs/$img\" title=\"$img\" /></a>" >> index.html
最后再用cat
添加HTML页脚。
5.8.4 参考
1.5节讲解了EOF和stdin
重定向。