5.8 网页相册生成器

Web开发人员通常都会为网站设计相册页面,这些页面上包含着多个图像缩略图。点击缩略图,就会出现一幅放大的图片。但如果需要很多图片的话,每一次都得复制 5.8 网页相册生成器 - 图1 标记、调整图片大小来创建缩略图、把调整好的图片放进缩略图目录、测试链接,诸如此类的活儿实在烦琐。这些工作会花费大量时间,但都是一些简单无谓的重复。我们可以写一个脚本将这些工作步骤实现自动化处理。这样一来,创建缩略图、将缩略图放入对应的目录、生成用于 5.8 网页相册生成器 - 图2 标记的代码片段都可以在短短几秒钟内自动搞定。这则攻略正是要告诉你如何实现刚才所说的一切。

5.8.1 预备知识

要完成这项任务,可以通过for循环对当前目录下的所有图片进行迭代。这需要借助一些常见的Bash工具,如catconvert。我们将用所有的图片生成一个HTML相册index.html。要使用convert,先确保你已经安装了Imagemagick。

5.8.2 实战演练

生成HTML相册页面的Bash脚本如下:

  1. #!/bin/bash
  2. #文件名: generate_album.sh
  3. #用途: 用当前目录下的图片创建相册
  4. echo "Creating album.."
  5. mkdir -p thumbs
  6. cat <<EOF > index.html
  7. <html>
  8. <head>
  9. <style>
  10. body
  11. {
  12. width:470px;
  13. margin:auto;
  14. border: 1px dashed grey;
  15. padding:10px;
  16. }
  17. img
  18. {
  19. margin:5px;
  20. border: 1px solid black;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <center><h1> #Album title </h1></center>
  26. <p>
  27. EOF
  28. for img in *.jpg;
  29. do
  30. convert "$img" -resize "100x" "thumbs/$img"
  31. echo "<a href=\"$img\" ><img src=\"thumbs/$img\" title=\"$img\" />
  32. </a>" >> index.html
  33. done
  34. cat <<EOF >> index.html
  35. </p>
  36. </body>
  37. </html>
  38. EOF
  39. echo Album generated to index.html

运行脚本:

  1. $ ./generate_album.sh
  2. Creating album..
  3. Album generated to index.html

5.8.3 工作原理

脚本的起始部分用于生成HTML页面的头部。

接下来,脚本将一直到EOF的这部分内容(不包括EOF在内)重定向到index.html:

  1. cat <<EOF > index.html
  2. contents...
  3. EOF

页面头部包括HTML和样式表单。

for img in *.jpg;对每一个文件进行迭代,并执行相应的操作。

convert "$img" -resize "100x" "thumbs/$img"将创建宽度为100px的图像缩略图。

下面的语句会生成所需的5.8 网页相册生成器 - 图3标记并将其追加到index.html中:

  1. echo "<a href=\"$img\" ><img src=\"thumbs/$img\" title=\"$img\" /></a>" >> index.html

最后再用cat添加HTML页脚。

5.8.4 参考

1.5节讲解了EOF和stdin重定向。