当前位置: 首页 > article >正文

Linux: Shell编程中的应用之基于sh脚本生成网页

应用场景

  • 使用脚本,生成一个网页,这个网页中展示图片
  • 网页中展示的图片是一张张的缩略图
  • 点击缩略图,链接到原始图片,我们实现这样的功能

环境准备

1 )准备目录和文件

  • $ mkdir gallery
  • $ cd gallery && mkdir thumbnails 这里创建一个缩略图目录

2 )目录结构

gallery
├── 1.jpg
├── 2.jpg
├── 3.jpg
├── 4.jpg
├── 5.jpg
├── 6.jpg
├── 7.jpg
├── 8.jpg
├── gallery.html
├── gallery.sh
├── thumbnails  这个目录也可自动生成
│   └── 注意,这里是通过工具生成的 1.jpg 等

3 )关于缩略图和工具准备

  • thumbnail 就是缩略图目录
  • 网页或计算机上图片经压缩处理后的小图
  • convert 命令帮助我们从原始图片生成缩略图
  • convert 这个命令属于 ImageMagick 这个软件
  • 安装软件:$ sudo yum install ImageMagick
  • convert 命令生成缩略图参数:-thumbnail

4 )脚本准备

  • 根据目录中的每张图片,生成对应缩略图
  • 生成一个html文件,插入缩略图
  • 给每个缩略图绑定一个链接,链接到原始图片
  • 准备这个文件 gallery.sh
  • 使用的时候,可以加参数,也可不加
  • 加参数,则表示新网页名称,如 $ ./gallery.sh myGallery.html
  • 不加则默认使用 gallery.html

脚本编写


$ vim gallery.sh ,如下:

#!/bin/bash

# Verification of parameter(验证参数)
# If no parameter, use a default value(如果没有给出参数,那么用默认值 gallery.html )
if [ -z $1 ]
then
    output='gallery.html'
else
    output=$1
fi

# Preparation of files and folders(准备文件和目录)清空html文件
echo '' > $output

if [ ! -e thumbnails ]
then
    mkdir thumbnails
fi

# Beginning of HTML(HTML 文件的开头)
echo '<!DOCTYPE html>
<html>
  <head>
    <title>My Gallery</title>
  </head>
  <body>
    <p>' >> $output

# Generation of thumbnails and the HTML web page(生成图片的缩略图和 HTML 的页面主体)
for image in `ls *.jpg *.png *.jpeg *.gif 2>/dev/null`
do
	# 这里使用 convert 命令生成缩略图到thumbnails目录,小于200*200的不会处理
    convert $image -thumbnail '200x200>' thumbnails/$image
    echo '      <a href="'$image'"><img src="thumbnails/'$image'" alt=""/></a>' >> $output
done

# End of HTML(HTML 文件的结尾)
echo '    </p>
  </body>
</html>' >> $output
  • 授权 $ chmod +x gallery.sh
  • 执行 $ ./gallery.sh
  • $ ls 可见生成一个 gallery.html 文件,打开即可浏览
  • 后续可能得优化
    • 在每张缩略图下展示其他信息
    • 例如:图片原始尺寸,最近一次修改图片时间
    • 要获取这些信息,需要调用 convert 命令

http://www.kler.cn/a/369116.html

相关文章:

  • QT界面开发--我的第一个windows窗体【菜单栏、工具栏、状态栏、铆接部件、文本编辑器、按钮、主界面】
  • pyvideotrans 最佳AI翻译软件
  • 手指关节分割系统:视觉算法突破
  • Linux练习_2账户管理
  • 《MYSQL 实战45讲》order by工作原理 10/27
  • 【数据结构与算法】《Java 算法宝典:探秘从排序到回溯的奇妙世界》
  • windows查端口是哪个进程开的
  • 关于SpringMVC项目
  • vue 解决:npm ERR! code ERESOLVE 及 npm ERR! ERESOLVE could not resolve 的方案
  • 谷歌仓库管理工具repo
  • 基于Matlab 疲劳检测系统
  • 一个临床数据收集/调查问卷APP模板(streamlit+MongoDB)
  • django celery 定时任务 Crontab 计划格式
  • 无线麦克风方案芯片DSH32F3024
  • OpenCV ORB角点检测匹配和偏移计算
  • QT 机器视觉 1.相机类型
  • springboot集成camunda学习与使用
  • 微信小程序 - 图像加载时渐隐淡入效果 image,实现渐入渐出动画效果,微信小程序实现图片加载淡入淡出效果,图像加载时的渐隐淡入效果!
  • 全网最简单的Java设计模式【九】原型模式深入解析
  • 深入分析梧桐数据库SQL查询之挖掘季度销售冠军
  • 安卓14上蓝牙调用SystemProperties.set(),解决找不到SystemProperties.set()的问题
  • Ubuntu 2张4090,显卡安装,无法双屏显示
  • [产品管理-51]:产品经理:塑造未来的多面手,道、法、术、器的全面掌控
  • 【完整版】opencv-python-headless、opencv-python和opencv-contrib-python区别和联系
  • AI Weekly3:过去一周重要的AI资讯汇总
  • 记录一个docker volume映射目录创建文件报错问题