2023.11.22使用flask做一个简单的图片浏览器
2023.11.22使用flask做一个简单的图片浏览器
功能:
实现图片浏览(翻页)功能
程序页面:

程序架构:

注意:在flask中常会使用src=“{{ url_for(‘static’, filename=‘images/’ + image) }}”,这段代码是在Flask框架中用于获取静态文件的URL的。在Flask中,静态文件通常存放在static文件夹中,比如CSS、JavaScript或者图片文件等。url_for(‘static’, filename=‘images/’ + image)这段代码会生成一个对应静态文件的URL,其中’static’是指定静态文件夹的名称,‘images/’ + image是指定文件夹中图片的路径。
如果image是一个变量,那么在渲染模板的时候就会根据实际的image的值来生成对应的URL。这个URL可以在前端页面中引用,用于加载静态图片文件。
注意静态文件夹如果要改变需要另外声明。
main.py
import os
from flask import Flask, render_template, requestapp = Flask(__name__)@app.route('/')
def index():return render_template('index.html')@app.route('/preview', methods=['POST'])
def preview():image_name = request.form['image_name']image_dir = os.path.dirname(os.path.abspath(__file__)) + '/static/uploads'image_list = sorted(os.listdir(image_dir))current_index = image_list.index(image_name)prev_index = current_index - 1 if current_index > 0 else Nonenext_index = current_index + 1 if current_index < len(image_list) - 1 else Noneprev_image_name = image_list[prev_index] if prev_index is not None else Nonenext_image_name = image_list[next_index] if next_index is not None else Noneimage_url = f'/static/uploads/{image_name}'return render_template('preview.html', image_name=image_name, image_url=image_url, prev_image_name=prev_image_name, next_image_name=next_image_name)if __name__ == '__main__':app.run(debug=True)
preview.html
<!DOCTYPE html>
<html>
<head><title>Image Preview</title><link href="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/css/bootstrap.min.css" rel="stylesheet"><script src="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/js/bootstrap.bundle.min.js"></script><style>body {padding: 20px;}img {height: 200px;width: 200px;}</style>
</head>
<body><h2>Image Preview: {{ image_name }}</h2><div><img src="{{ image_url }}" class="img-fluid" alt="Preview"></div><div class="btn-group mt-2" role="group" aria-label="Image Navigation"><form action="/preview" method="post">{% if prev_image_name %}<input type="hidden" name="image_name" value="{{ prev_image_name }}"><input type="submit" class="btn btn-primary" value="Prev">{% endif %}</form><form action="/preview" method="post">{% if next_image_name %}<input type="hidden" name="image_name" value="{{ next_image_name }}"><input type="submit" class="btn btn-primary" value="Next">{% endif %}</form></div>
</body>
</html>
index.html
<!DOCTYPE html>
<html>
<head><title>Image Preview</title>
</head>
<body><h2>Enter Image Name</h2><form action="/preview" method="post"><input type="text" name="image_name" placeholder="Enter Image Name"><button type="submit">Preview</button></form>
</body>
</html>
相关文章:
2023.11.22使用flask做一个简单的图片浏览器
2023.11.22使用flask做一个简单的图片浏览器 功能: 实现图片浏览(翻页)功能 程序页面: 程序架构: 注意:在flask中常会使用src“{{ url_for(‘static’, filename‘images/’ image) }}”,…...
万字解析设计模式之桥接模式、外观模式
一、桥接模式 1.1概述 桥接模式是一种结构型设计模式,它的作用是将抽象部分和实现部分分离开来,使它们能够独立地变化。这样,抽象部分和实现部分可以分别进行扩展,而不会相互影响。它是用组合关系代替继承关系来实现,…...
常用系统函数
$clog2 clogb2 系统函数 $clog2 应返回参数以 2 为底的对数的上限(对数四舍五入为整数值)。参数可以是整数或任意大小的向量值。参数应被视为无符号值,参数值为 0 将产生结果 0。 该系统函数可用于计算对给定大小的存储器进行寻址所…...
键盘控制ROS车运动
键盘控制ROS车运动 上位机 使用pyseria库与stm32单片机进行通信控制 #!/usr/bin/env python # -*- coding: utf-8 -*import sys, select, termios, tty import serialmsg """ ---------------------------w a x ds w : x a : y s : -x …...
linux上交叉编译qt库
linux上交叉编译qt库 Qt程序从X86平台Linux移植到ARM平台Linux需要做什么 1.在ubuntu上使用qt的源码交叉编译出Qt库 2.将编译好的库拷贝到开发板上并设置相应的环境变量(库路径啥的) 前两步一劳永逸,做一次就行 3.X86上写好程序代码&…...
Nacos介绍与使用
Nacos介绍与使用 文章目录 Nacos介绍与使用一. 什么是Nacos1 Nacos功能1.1 配置中心1.2 注册中心 2.为什么要使用Nacos 二.Nacos 部署安装1. Nacos 部署方式2. Nacos 安装3. 配置数据源4. 开启控制台授权登录(可选) 三. Nacos配置中心的使用1. 创建配置信…...
网工内推 | 字节原厂,正式编,网络工程师,最高30K*15薪
01 字节跳动 招聘岗位:网络虚拟化高级研发工程师 职责描述: 1、负责字节跳动虚拟网络产品的研发,包括但不局限于网络VPC、NAT、LB负载均衡等; 2、负责字节跳动网络基础平台的研发,包括但不局限于网络控制面系统、容器…...
Git 远程仓库(Github)
目录 添加远程库 查看当前的远程库 提取远程仓库 推送到远程仓库 删除远程仓库 Git 并不像 SVN 那样有个中心服务器。 目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员…...
Mybatis Plus分页实现逻辑整理(结合芋道整合进行解析)
Mybatis Plus分页实现逻辑整理(结合芋道整合进行解析) 我希望如春天般的你,身着白色的婚纱,向我奔赴而来,我愿意用全世界最温情的目光,朝着你的方向望去——姗姗来迟。 1.背景介绍 https://baomidou.com/p…...
C#编程题分享(2)
输出所有整数的和 让⽤户输⼊整数,如果⽤户输⼊的不是0,就继续输⼊,如果输⼊的是0,结束整数,并输出所有整数的和。 Console.WriteLine("请输⼊⼀个整数:"); int n; int sum 0; do {n Convert…...
Dockerfile基础
前言 知识点整理 Dockerfile 简介 它是一个没有后缀名的文本文档,里面是组合镜像的一些命令,Docker build命令构建镜像时,通过读取Dockerfile中的指令的顺序(自上到下)自动生成镜像。 Dockerfile 命令 1. FROM 指…...
python+selenium实现web自动化(基础入门)
selenium 是一个自动化操控工具,支持对web端进行自动化操控,从而实现自动化测试。 相关文档: https://python-selenium-zh.readthedocs.io/zh-cn/latest/https://www.selenium.dev/documentation/ 安装配置 环境依赖: python…...
Spring Boot 自动配置
1. Spring Boot 自动配置 Spring Boot的自动配置是其核心特性之一,旨在简化Spring应用程序的配置过程。这个特性通过合理的默认值以及根据类路径和其他因素自动配置Spring Beans来极大地减少了配置的工作量。以下是Spring Boot自动配置的详细讲解: 基本…...
力扣labuladong一刷day13天双指针8道链表题
力扣labuladong一刷day13天双指针7道链表题 一、21. 合并两个有序链表 题目链接:https://leetcode.cn/problems/merge-two-sorted-lists/ 思路:合并只需要新new一个虚拟头结点,然后遍历比较两个链表把较小的那一个顺序接在虚拟头结点后面。…...
【剑指offer|图解|链表】链表的中间结点 + 链表中倒数第k个结点
🌈个人主页:聆风吟 🔥系列专栏:数据结构、算法模板 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. ⛳️链表的中间结点二. ⛳️链表中倒数第k个结点📝结语 Ὄ…...
被环境变量虐过一遍获得的启示
Oracle数据库环境存在两个数据库版本12C及19C,在执行一些操作时需要设置对应版本的环境变量 计划登录12C环境,于是按如下方式设置环境变量 export ORACLE_BASE/u01/app/oracle export ORACLE_HOME$ORACLE_HOME/product/12.2.0/dbhome_1 export ORACLE_S…...
关于Hbase的一些问题
HBase 1. RowKey如何设计,设计不好会产生什么后果 唯一原则:在设计上要保持RowKey的唯一性。 因为HBase中的数据是以KV的格式来存储的,所以如果向同一张表中插入RowKey相同的数据,旧的数据会被覆盖掉。 长度原则:建…...
level=warning msg=“failed to retrieve runc version: signal: segmentation fault“
安装docker启动后,发现里面没有runc版本信息 目前看是少了runc组件 那我们安装runc https://github.com/opencontainers/runc/releases/download/v1.1.10/runc.amd64 [rootlocalhost ~]# mv runc.amd64 /usr/bin/runc mv:是否覆盖"/usr/bin/runc&q…...
电力工作记录仪、智能安全帽、智能布控球助力智能电网建设
电力行业的建设和发展是国家经济发展的重要支撑,而智能电网作为电力系统的重要组成部分,它的安全高效运行关乎到整个电力系统乃至民生的稳定和安全。为了加快国家经济的发展以及满足人们对电力的需求和用电可靠性的要求,国家早在十二规划中就…...
【CSS】各百分比透明度 opacity 对应的 16 进制颜色值(例如:#FFFFFF80)
文章目录 使用:6位颜色值2位透明度值 color: #000000D4; /* 等价于 */ color: #000000; opacity : 0.83; /* 等价于 */ color: #000000; opacity : 83%; 对照表(0:完全透明,1:不透明) 透明度值百分百值十…...
购买腾讯云时最容易被忽略的痛点:配置、成本和运维闭环
很多客户在购买腾讯云或开始使用腾讯云时,真正的痛点往往不是“不会下单”,而是下单前后缺少一套清晰的决策和运维闭环。第一个痛点是配置选择不确定。不少团队会先纠结 CPU、内存、带宽、地域、系统盘和数据盘怎么选。配置买低了担心业务跑不动…...
为你的Nodejs后端服务快速集成大模型能力
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为你的Nodejs后端服务快速集成大模型能力 当你的Node.js应用需要添加智能对话或内容生成功能时,直接对接各大模型厂商的…...
斯坦福CS229机器学习中文教程:从零到一的实战学习指南
斯坦福CS229机器学习中文教程:从零到一的实战学习指南 【免费下载链接】Stanford-CS-229 A Chinese Translation of Stanford CS229 notes 斯坦福机器学习CS229课程讲义的中文翻译 项目地址: https://gitcode.com/gh_mirrors/st/Stanford-CS-229 你是否曾因英…...
在Windows 10上搞定OpenPCDet:从KITTI数据集训练到自定义数据集的完整避坑指南
在Windows 10上搞定OpenPCDet:从KITTI数据集训练到自定义数据集的完整避坑指南 3D目标检测技术正在重塑自动驾驶、机器人感知等领域的发展格局。作为该领域的重要开源框架,OpenPCDet以其模块化设计和出色的性能表现吸引了大量研究者和开发者。然而&#…...
2025届毕业生推荐的六大AI科研网站实测分析
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 一款专为院校学子以及初级科研工作者所设计的AI开题报告工具,它聚焦于开题环节的…...
gRPC流量分析实战:用cursor-tap工具实现AI对话可视化与游戏集成
1. 项目概述:从零到一,打造一个能“监听”AI对话的独立游戏 最近在折腾一个挺有意思的玩意儿,叫 cursor-tap 。这名字听起来有点神秘,对吧?简单来说,它是一个用来分析 gRPC 通信流量的工具。但如果你以为…...
终极AI图像分层工具LayerDivider:3分钟完成复杂插画自动分层
终极AI图像分层工具LayerDivider:3分钟完成复杂插画自动分层 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 在数字设计创作中,您…...
如何彻底解决JavaScript浮点数精度问题:decimal.js完整指南
如何彻底解决JavaScript浮点数精度问题:decimal.js完整指南 【免费下载链接】decimal.js An arbitrary-precision Decimal type for JavaScript 项目地址: https://gitcode.com/gh_mirrors/de/decimal.js 你是否曾经遇到过JavaScript中0.1 0.2 ≠ 0.3的尴尬…...
从Landsat 8数据到地表温度:劈窗算法实战解析
1. 从Landsat 8数据到地表温度:劈窗算法实战解析 地表温度是研究城市热岛效应、农业干旱监测、气候变化等领域的重要参数。Landsat 8卫星搭载的热红外传感器TIRS(Thermal Infrared Sensor)提供了两个热红外波段(B10和B11ÿ…...
大疆智图+B3DM切片+Cesium:5分钟搞定倾斜摄影三维模型在线发布
大疆智图B3DM切片Cesium:零代码实现倾斜摄影三维模型Web发布全指南 当无人机航拍的倾斜摄影数据需要快速在Web端展示时,技术栈的衔接往往成为最大障碍。本文将手把手带您实现从大疆智图生成B3DM切片到Cesium可视化呈现的完整流程,全程无需编写…...
