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脚本啊。 :-)

时间: 2024-09-22 03:30:20

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

如何通过shell脚本生成服务器密码

写了一个可以生成随机密码的脚本,如果想要纯数字或才字母或者大小写,都可以自定,我这里写了全元素. #!/bin/bash # author: honway.liu # date: 2013-07-19 # concate: gm100861@gmail.com len=90 str=(a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2

通过shell脚本生成数据统计信息的报表

对于统计信息的收集,不同的环境中使用的策略也会有很大的不同,有的按照一定的时间频率来收集,有的比较稳定的系统根据数据的增长频率来收集,用户比较稳定的系统,甚至都不再收集统计信息. 以下是使用shell生成的统计信息报表效果,可以在备份库中进行这些信息的收集,可以看到哪些表的查询耗费的时间较多,当前数据条数和统计信息中的数据条数. #############################################################################     ta

利用shell脚本生成动态sql

在一些分布式环境中,可能涉及到的数据库有很多,相关的数据库用户也不少,有些看似简单的变更可能需要在不同的库,不同的用户间要进行复杂的操作. 现在我们有3套环境,一套是测试环境test,一套是准生产环境xprd,一套是生产环境prod, 比如在prod上有5个库一共20个用户,某一个变更可能在这20个用户里面要进行一些的操作.xprd里面和生产环境类似,也有数据库用户,test环境中有10个用户,需要在这10个用户中进行相应的操作. 最开始的时候,使用sqlplus和shell脚本,如下 sqlp

通过shell脚本生成查询表数据的sql

在工作中我们需要查询表的数据条数,一般来说就是使用select count(1)或者select count(*)之类的语句. 当然了对于不同的表来说,应该还是可以做一些细分,能够最大程度的提高效率,比如表中含有主键列,尝试走索引扫面可能会被全表扫描效率要高.如果表中的数据太多,而且没有一些相关的约束,可以考虑使用并行来提高等等. 以下就是使用shell脚本所做的查询数据条数的一个例子,看起来有些太不值得了,但是如果数据量很大的情况下这些分析就格外有用了. 比如表customer,数据量不是很大

巧用shell脚本生成快捷脚本

在升级的过程中,可能需要准备一些额外的脚本,比如说做数据迁移的时候为了考虑性能,需要做如下的额外工作: 1.将部分表置为nologging 2.将部分index置为nologging 3.将部分foreign key constraint置为disable 4.将部分trigger 置为disable 在完成数据升级后,再置为logging,enable状态. 但是在准备脚本的过程中,总是为这些小脚本而头疼,可能在升级前临时增加了一些表或者取消了部分表.或者有了其他的变更,维护这些脚本就显得有些

使用shell脚本生成只读权限的sql脚本

目前做数据迁移,有8套不同的环境,为了保护环境,每个环境中的表,视图等开发都不能修改,只能通过连接用户去查询. 每个环境中可能含有表,索引,序列,存储过程,函数等,所以一个一个写是不现实的,写了下面的动态脚本来自动生成相应的权限,然后创建对应的同义词. 脚本会生成两个sql脚本,一个是owner用户赋予权限使用的,另外一个脚本是connect用户使用的,创建了对应的同义词. source_schema=$1 conn_schema=$2 sqlplus -s xxx/xx   set feedb

shell脚本实现随机生成10个8位密码_linux shell

随机生成10个8位密码shell脚本 1.首位大写字母 2.中间六位大小写字母数字随机混合 3.第八位[0-9] #!/bin.bash for i in {1..10} do A=`head -c 500 /dev/urandom | tr -dc a-zA-Z | tr [a-z] [A-Z]|head -c 1` B=`head -c 500 /dev/urandom | tr -dc a-z0-9A-Z | head -c 6` C=`echo $RANDOM|cut -c 2` ech

shell脚本如何获取随机数random

用C提供的取随机数的方法srand和rand, 前者是给后者设置随机数种子seed. int rnd_num = 0; srand(seed);       // time(NULL) 通常使用时间做种子 rnd_num = rand();  // 产生随机数 产生种子的方法: 1. 使用日期时间 时间作为种子很简单,取当前日期和时间,但是存在一个陷阱:当多台机器并发执行产生随机数时,出现相同随机数的概率非常高.不推荐这种方式 2. 使用$RANDOM 需要系统支持,通过echo来检测, 打印出

Linux系统防CC攻击自动拉黑IP增强版(Shell脚本)_Linux

前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存黑名单突然无法过滤后台,导致WordPress无法登录!虽然,可以通过修改本地hosts文件来解决这个问题,但是还是想暂时取消CDN加速和防护来测试下服务器的性能优化及安全防护. 前天写的Shell脚本是加入到crontab计划任务执行的,每5分钟执行一次,今天实际测试了下,可还是可以用的,但是感觉5分钟时间有点过长,无法做到严密防护.于是稍微改进了下代码,现在简单的分享下! 一.Shell代码 #