Shell脚本生成网页版相册浏览器
今天学到了一招,那就是使用脚本制作一款网页版相册浏览器。先上图吧。
必备基础
操作系统: 以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脚本生成网页版相册浏览器的更多相关文章
- 利用python和shell脚本生成train.txt的标签文件
1. 用shell脚本生成带绝对路径的train.txt 例如我要生成如下形式的带标签的文件,如图:(如有两个标签:0 和 1) shell脚本如下: 这样标签0写入了train.txt # /usr ...
- 使用shell脚本生成数据库markdown文档
学习shell脚本编程的一次实践,通过shell脚本生成数据库的markdown文档,代码如下: HOST=xxxxxx PORT=xxxx USER="xxxxx" PASSWO ...
- 利用shell脚本生成CHANGELOG.md(包含git提交规范)
前言 我们经常看到github上面有很多CHANGELOG.MD包含版本的更新信息,如果我们的git提交能遵循一定的规范,那么使用gitlog就能很方便的生成它 生成结果  shell脚本 http ...
- shell脚本生成xml文件
今天把这段时间学习完shell后完成工作上的一个小案件整理了一下,分享给大家! 说来也巧了,作为一个刚刚毕业半年的菜鸟,进入公司后,听公司的大牛推荐学习linux--”鸟哥的私房菜“,基本上是从去年8 ...
- shell脚本下载网页图片
和大家分享一个shell脚本写的图片抓取器.使用方法:img_downloader.sh.使用时在shell下输入:./img_downloader.sh www.baidu.com -d image ...
- 用shell脚本生成at一次性的计划任务
用shell生成一次性计划任务,这个任务就是执行另一个脚本 #!/bin count=`grep "sh /usr/local/sbin/iptables.sh" /var/spo ...
- iOS开发系列-Shell脚本生成IPA
概述 在公司开发到了测试阶段需要频繁打包交付给测试,看似简单的工作,重复的流程总是感觉不是那么好,我们可以借助苹果提供的编译指令编译项目. 自动化脚本编译打包IPA 常见的iOS项目就是基于xcode ...
- shell脚本生成限定范围的随机数
#!/bin/bash +)) 这串代码实现了随机生成从1~50之间是数 这串代码特别简单,就是利用RANDOM这个随机数生成器进行取余就能够实现,至于为什么取余时需要+1是因为在取余时如果被整除那么 ...
- 案例四:Shell脚本生成随机密码
生成随机密码(urandom版本) #!/bin/bash #Author:丁丁历险(Jacob) #/dev/urandom文件是Linux内置的随机设备文件 #cat /dev/urandom可以 ...
随机推荐
- poj 1012——Toseph
提交地址:http://poj.org/problem?id=1012 ...
- [NOI2009]变换序列
Description Input Output Sample Input 5 1 1 2 2 1 Sample Output 1 2 4 0 3 HINT 30%的数据中N≤50: 60%的数据中N ...
- ●SPOJ 8222 NSUBSTR - Substrings(后缀数组)
题链: http://www.spoj.com/problems/NSUBSTR/ 题解: 同届红太阳 --WSY给出的后缀数组解法!!! 首先用倍增算法求出 sa[i],rak[i],hei[i]然 ...
- poj1681 高斯消元
Painter's Problem Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5352 Accepted: 2588 ...
- bzoj2434阿狸的自动机
转载自 http://www.cnblogs.com/zj75211/p/6934976.html ●BZOJ 2434: [Noi2011]阿狸的打字机 ●赘述题目 (题意就不赘述了) ●解法: ...
- 用js来实现那些数据结构11(字典)
我们这篇文章来说说Map这种数据结构如何用js来实现,其实它和集合(Set)极为类似,只不过Map是[键,值]的形式存储元素,通过键来查询值,Map用于保存具有映射关系的数据,Map里保存着两组数据: ...
- html高度塌陷以及定位的理解
高度塌陷的含义: 父元素的高度,默认被子元素撑开,目前来讲box2多高,box1就多高.此时如果子元素设置浮动,则会导致其完全脱离文档流,子元素脱离文档流将无法撑开父元素, 导致父元素的高度丢失,就是 ...
- 将一个div置于另一个div之上
div piao置于div bg之上 <div class="bg"> <div class="piao" style="backg ...
- ASP.NET Core部署到Windows IIS
网上已经有许多ASP.NET Core关于Widows IIS部署的文章,在部署到服务器时遇到了一些问题,在这里我就不再对原理进行阐释(复制)了,只写下一些关键环节,想看原理的同学请参考官网,此文章作 ...
- 一看你就懂,超详细java中的ClassLoader详解
本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 ClassLoader翻译过来就是类加载器,普通的Java开发者其实用到的不多,但对于某些框架开发者来说却非常常见.理解ClassL ...