今天学到了一招,那就是使用脚本制作一款网页版相册浏览器。先上图吧。

必备基础

  • 操作系统: 以linux为内核的操作系统都行

  • 编程语言:Shell(bash)脚本,相关基础知识即可

  • 下载工具:wget

  • 图片处理工具: ImageMagicK,

  • 解压缩工具 : rar ,bzip都行

  • 额外技能:一些基本的Linux操作命令,如此即可。

软件安装

这里说的软件安装主要是指解压缩工具和图片下载工具的使用。因为我的linux是在虚拟机里,而且没有安装文件共享增强(如果安装了增强的话,就不必安装解压缩工具了)

  • ImageMagicK下载:
# 不同的linux发行版包管理软件可能不一样,请按照自己的情况使用
sudo apt-get install ImageMagicK
  • rar安装:
sudo apt-get install rar

rar 解压缩工具不是必须的,因为我本机的windows没有安装zip文件解压工具,所以需要使用.rar解压工具。

工具的使用

  • wget 的使用,我在这里使用wget只是为了下载演示用的图片。其他的高级的使用请参照http://blog.csdn.net/marksinoberg/article/details/51790203

  • rar的使用:

    这里我一开始也是遇到了一些问题,那就是路径的问题。下面谈谈解压缩的具体使用。

    • 解压:rar x target.rar即可,x参数就代表了解压。

    • 压缩:rar a result.rar,这里需要注意的是需要进入到待压缩的文件夹,这样才能把该文件夹内所有的文件add 到result.rar文件中。

    • 其他的使用方法,我们可以使用man 命令详细的研究,这里有这些基础就足够了。

  • ImageMagicK的使用:

    这里仍旧是只需要一点的功能,那就是将图片的尺寸缩小,仅此而已,其他的高级使用暂且还用不到。

    convert -sample 25%x25% old.jpg new.jpg

Shell脚本

#!/bin/bash
#filename:generate_album.sh
#description: 把本地照片生成缩略图之后作为连接,生成网页版的相册浏览器

echo "Creating album..."
mkdir -p thumbs
cat <<EOF1 >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>
EOF1

for img in *.jpg;
do
    convert  -sample 25%x25%  "$img" "thumbs/$img"
    echo "<a href=\"$img\"><img src=\"thumbs/$img\" title=\"$img\" /></a>" >>index.html
done;
cat <<EOF2 >> index.html
</p>
</body>
</html>
EOF2

echo "Album generated Success!"

代码释义

核心代码也就如下:

for img in *.jpg;
do
    convert  -sample 25%x25%  "$img" "thumbs/$img"
    echo "<a href=\"$img\"><img src=\"thumbs/$img\" title=\"$img\" /></a>" >>index.html

其原理:

遍历当前文件夹下的所有的.jpg文件,然后使用convert命令生成新的缩略图并放到thumbs文件夹下。然后将标签添加到index.html中。

运行方法

# 为文件添加可执行权限
chmod 755 generate_album.sh
# 在当前目录下执行
./generate_album.sh

结语

Shell脚本配合强大的linux命令,总是能产生让人意想不到的效果。想必,windows下的cmd命令就乏陈可谓了。不过最近貌似微软开源了.net core项目,能执行linux命令的预览版也已经发布了。希望能在不久的将来,在windows上也能愉快的写shell脚本啊。 :-)

Shell脚本生成网页版相册浏览器的更多相关文章

  1. 利用python和shell脚本生成train.txt的标签文件

    1. 用shell脚本生成带绝对路径的train.txt 例如我要生成如下形式的带标签的文件,如图:(如有两个标签:0 和 1) shell脚本如下: 这样标签0写入了train.txt # /usr ...

  2. 使用shell脚本生成数据库markdown文档

    学习shell脚本编程的一次实践,通过shell脚本生成数据库的markdown文档,代码如下: HOST=xxxxxx PORT=xxxx USER="xxxxx" PASSWO ...

  3. 利用shell脚本生成CHANGELOG.md(包含git提交规范)

    前言 我们经常看到github上面有很多CHANGELOG.MD包含版本的更新信息,如果我们的git提交能遵循一定的规范,那么使用gitlog就能很方便的生成它 生成结果  shell脚本 http ...

  4. shell脚本生成xml文件

    今天把这段时间学习完shell后完成工作上的一个小案件整理了一下,分享给大家! 说来也巧了,作为一个刚刚毕业半年的菜鸟,进入公司后,听公司的大牛推荐学习linux--”鸟哥的私房菜“,基本上是从去年8 ...

  5. shell脚本下载网页图片

    和大家分享一个shell脚本写的图片抓取器.使用方法:img_downloader.sh.使用时在shell下输入:./img_downloader.sh www.baidu.com -d image ...

  6. 用shell脚本生成at一次性的计划任务

    用shell生成一次性计划任务,这个任务就是执行另一个脚本 #!/bin count=`grep "sh /usr/local/sbin/iptables.sh" /var/spo ...

  7. iOS开发系列-Shell脚本生成IPA

    概述 在公司开发到了测试阶段需要频繁打包交付给测试,看似简单的工作,重复的流程总是感觉不是那么好,我们可以借助苹果提供的编译指令编译项目. 自动化脚本编译打包IPA 常见的iOS项目就是基于xcode ...

  8. shell脚本生成限定范围的随机数

    #!/bin/bash +)) 这串代码实现了随机生成从1~50之间是数 这串代码特别简单,就是利用RANDOM这个随机数生成器进行取余就能够实现,至于为什么取余时需要+1是因为在取余时如果被整除那么 ...

  9. 案例四:Shell脚本生成随机密码

    生成随机密码(urandom版本) #!/bin/bash #Author:丁丁历险(Jacob) #/dev/urandom文件是Linux内置的随机设备文件 #cat /dev/urandom可以 ...

随机推荐

  1. Mysql之单表记录查询

    数据记录查询: 1.简单数据记录查询: select * from table_name; select allfield from table_name; select distinct(属性名) ...

  2. NIO-学习

    通道(Channel) 通道表示打开到 IO 设备(例如:文件.套接字)的连接.若需要使用 NIO 系统,需要获取用于连接 IO 设备的通道以及用于容纳数据的缓冲区.然后操作缓冲区,对数据进行处理.C ...

  3. BZOJ3129: [Sdoi2013]方程

    拓展Lucas+容斥原理 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cs ...

  4. 细胞(cell) 矩阵快速幂

    题目描述小 X 在上完生物课后对细胞的分裂产生了浓厚的兴趣.于是他决定做实验并观察细胞分裂的规律.他选取了一种特别的细胞,每天每个该细胞可以分裂出 x 1 个新的细胞.小 X 决定第 i 天向培养皿中 ...

  5. hdu3567 八数码(搜索)--预处理

    题意:为你两个状态,求a到b 的最小路径,要求字典序最小. 思路: 最开始想的是目标状态是变化的,所以打表应该不行,然后直接上A*,但是TLE了- -(瞬间无语) 然后看了下别人的思路,预处理出9个状 ...

  6. 4455[Zjoi2016]小星星 容斥+dp

    4455: [Zjoi2016]小星星 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 527  Solved: 317[Submit][Status] ...

  7. Java实现word文档在线预览,读取office文件

    想要实现word或者其他office文件的在线预览,大部分都是用的两种方式,一种是使用openoffice转换之后再通过其他插件预览,还有一种方式就是通过POI读取内容然后预览. 一.使用openof ...

  8. Spring使用@Scheduled定时调度

    一.spring配置文件中增加对这个注解的支持: 配置文件如下: <?xml version="1.0" encoding="UTF-8"?> &l ...

  9. 华科机考:a+b

    时间限制:1秒     空间限制:32768K 题目描述 实现一个加法器,使其能够输出a+b的值. 输入描述: 输入包括两个数a和b,其中a和b的位数不超过1000位. 输出描述: 可能有多组测试数据 ...

  10. BlockingQueue阻塞队列(解决多线程中数据安全问题 可用于抢票,秒杀)

    案例:一个线程类中 private static BlockingQueue<Map<String, String>> dataQueue = new LinkedBlocki ...