使用flask实现图片的查看、翻页操作、分类和上传

这篇具有很好参考价值的文章主要介绍了使用flask实现图片的查看、翻页操作、分类和上传。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本实验使用flask制作一个图像的分类上传界面,首先介绍一下使用方法。

一、使用简介

页面如下

使用flask实现图片的查看、翻页操作、分类和上传

1、首先打开‘index.html’文件,在select标签中添加分类类别。注意:value值应和标签文本一样。

使用flask实现图片的查看、翻页操作、分类和上传 

将需要分类的图片全部粘贴进images文件夹中。

 使用flask实现图片的查看、翻页操作、分类和上传

使用flask实现图片的查看、翻页操作、分类和上传

 运行‘classify.py’文件。使用flask实现图片的查看、翻页操作、分类和上传

点击下方链接

使用flask实现图片的查看、翻页操作、分类和上传出现以下界面使用flask实现图片的查看、翻页操作、分类和上传在地址栏后输入第几张图片,如需要定位到第5张图片使用flask实现图片的查看、翻页操作、分类和上传

点击上一张可以切换图片。

使用flask实现图片的查看、翻页操作、分类和上传

 

点击上传按钮即可上传到对应文件夹。

使用flask实现图片的查看、翻页操作、分类和上传

 提示上传成功

使用flask实现图片的查看、翻页操作、分类和上传

此时文件夹已创建,且该图片已上传。

使用flask实现图片的查看、翻页操作、分类和上传使用flask实现图片的查看、翻页操作、分类和上传

如果改图片已上传至此文件夹,会提示上传失败。

使用flask实现图片的查看、翻页操作、分类和上传

 此外,点击上一张下一张即可切换图片,直接在地址栏输入第几张图片也可以。文章来源地址https://www.toymoban.com/news/detail-436210.html

二、classify.py

import os
import shutil
from flask import Flask, render_template, request
import settings
app = Flask(__name__)
app.config.from_object(settings)
id = 0
@app.route('/<int:id>', methods=['POST', 'GET'])
def index(id):
    root_dir = os.path.abspath(os.path.dirname(__file__))
    img_path = root_dir + '/static' + '/images'  # 图片文件存储在static文件夹下的images文件夹内
    files = os.listdir(img_path)  # 获取图片文件名字
    # print(root_dir)
    # print(img_path)
    # print(type(files[0]))  # 输出一个列表,1.jpg,2.jpg
    # print(files[id])
    i = len(files)
    if id == len(files) + 1:
        id = 1
    file = "/static/images/" + files[id - 1]
    print(file)
    filename = files[id - 1]
    print(filename)
    if request.method == 'POST':
        basepath = os.path.dirname(__file__)  # 当前文件所在路径
        f = os.path.join(basepath, 'static/images', files[id - 1])  # 获取原图片路径
        val = request.form.get('sel')  # 获取图片将要分类到的文件夹名称
        print(val)
        sub_path = os.path.join(basepath, 'static/', val)  # 获取该图片将要分类到的文件夹路径
        if os.path.exists(sub_path) is False:
            os.makedirs(sub_path)
        sub_files = os.listdir(sub_path)
        # 如果图片已经存在在该文件夹下,提示上传失败
        for sub_file in sub_files:
            if files[id-1] == sub_file:
                return render_template('index_re.html', file=file, id=id, i=i, filename=filename, val=val)

        upload_path = os.path.join(basepath, 'static/', val+'/', files[id - 1])
        print(upload_path)

        # 复制图片
        shutil.copy(f, upload_path)
        return render_template('index_ok.html', file=file, id=id, i=i, filename=filename, val=val)
    return render_template('index.html', file=file, id=id, i=i, filename=filename)


if __name__ == '__main__':
    app.run()

三、index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>上传</title>
    <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}" />
</head>
<body>
    <h1>图像分类</h1>
    <p>当前是第{{ id }}张图片,图片名为{{ filename }}</p>
    <img src="{{ file }}" width="400" height="400" alt="你的图片被外星人劫持了~~"/>
        <div class="select_beforePage_button">
        {% if id !=1 %}
            <a href="{{ url_for('index', id=id - 1) }}"><span aria-hidden="true">&larr;</span> 上一张</a>
            {% endif %}
        </div>
        <div class="select_nextPage_button">
        {% if id !=i %}
            <a href="{{ url_for('index', id=id + 1) }}" style="">下一张<span aria-hidden="true">&rarr;</span></a>
        {% endif %}
        </div>
    <br>
    <form action="" enctype='multipart/form-data' method="POST">
        <br>
        选择图片类别
        <select id="sel" name="sel" style="width: 150px;">
            <option value="花">花</option>
            <option value="猫">猫</option>
            <option value="风景">风景</option>
            <option value="狗">狗</option>
            <option value="车">车</option>
            <option value="鸟">鸟</option>
        </select>
        <input type="submit" value="上传" class="button" style="margin-top:15px;"/>
        <br>
        <br>
        {% block load %}
        {% endblock %}

    </form>
</body>
</html>

四、index_ok.html

{% extends 'index.html' %}
        {% block load %}
            <span id="ok">上传成功!上传至文件夹:"{{ val }}"</span>
        {% endblock %}

五、index_re.html

{% extends 'index.html' %}
{% block load %}
            <span id="ok">上传失败!该图片已在该文件夹中</span>
{% endblock %}

六、style.css

h1 {
    color:black;
    text-align:center;
}
p {
    font-family:"Times New Roman";
    font-size:20px;
}

.select_beforePage_button{
    position: fixed;/*固定位置*/
			}
.select_nextPage_button{
    position: fixed;/*固定位置*/
    margin-left: 350px;
			}

到了这里,关于使用flask实现图片的查看、翻页操作、分类和上传的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • DEDECMS织梦模板实现图集单击图片翻页的教程

    1、为了实现这个功能,我们首先需要获得图片页面的当前页码和总页码 编辑include/inc_archives_view.php文件 (1)找到function ParseDMFields,修改为: 注意增加了如下代码用来获得当前的页码: (2)找到function __construct构造函数,修改为: 以上就是本文的全部内容,希望对大家的学

    2024年02月02日
    浏览(38)
  • 用html、css和jQuery实现图片翻页的特效

    在当今的web设计中,图片翻页特效是一种常见而且受欢迎的技术。通过图片的切换与过渡效果,能够使网页更具动感和吸引力。下面写一个简单的示例,来介绍一下如何使用html、css和jQuery实现图片翻页特效。 1,html结构 首先,在html中创建一个容器,用于包裹图片的内容,并

    2024年02月08日
    浏览(32)
  • C# 在picturebox控件里实现用鼠标滚轮让图片上下翻页,按住ctrl键加鼠标滚轮实现图片放大缩小

    想要实现picturebox控件里面用鼠标滚轮让图片上下翻页和按住ctrl键加鼠标滚轮实现图片放大缩小这两个功能,就要借助于picturebox控件中的三个事件。 第一个是pictureBox1_KeyUp。 第二个是pictureBox1_KeyDown。 第三个是PictureBox1_MouseWheel 下面直接上代码就可以了: private void pictureBox1

    2024年02月09日
    浏览(46)
  • 微信小程序文件上传、下载和图片处理、文件操作API的使用

    这次按照我的理解来做这部分的笔记 首先,复习上节课所学的内容。就是网络请求api的使用  现在我有一个需求就是点击按钮实现获取后端返回的图片  先打开服务器  看一下我们要返回的图片路径  书写结构  看一下返回来的数据。是在data下的banners里。因此我们封装一下

    2024年02月04日
    浏览(35)
  • 小程序样例2:简单图片分类查看

    类目2置灰后,主页不再显示 获取类目数据,选择某个类目时,获取对应类目下的图片列表。 因为有类目编辑,数据会发生变化,某个类目显示和隐藏后,主页要重新获取数据; index.js index.wxml index.wxss types.js types.wxml types.wxss album.js album.wxml album.wxss app.js app.json app.wxss 图片都

    2024年01月25日
    浏览(23)
  • vue3 电子书 pdf转图片 pdf实现翻页效果 pdfjs-dist、turn.js电子书翻页效果

    下载 turn.js 这里使用的是  turn4  ,需要下载到本地引入,通过npm下载会报错可以到官网下载,也可以直接在本博客下,已经上传到博客 导入文件之前先创建   vue.config.js 适配一下jquery ,创建好文件以后,把以下代码复制进去 回到vue页面,导入以下文件 参考博客:GitHub -

    2024年02月16日
    浏览(31)
  • 使用minio实现图片和视频的上传

    ps:因为业务上遇到了用minio实现图片的上传所以记录一下使用 MinIO是一个开源的 对象存储服务器 ,可以用来存储和检索任何类型的文件,包括图片、视频、文档等。MinIO的设计目标是为了 提供高性能、高可用性和可扩展性的对象存储服务 ,同时保持简单易用和低成本。 为

    2024年02月12日
    浏览(25)
  • SpringBoot3 + uniapp 对接 阿里云0SS 实现上传图片视频到 0SS 以及 0SS 里删除图片视频的操作(最新)

    UpLoadFile.vue deleteOssFile.js http.js FileUploadController.java AliOssUtil.java

    2024年04月14日
    浏览(32)
  • 使用Vue + axios实现图片上传,轻松又简单

    目录 一、Vue框架介绍 二、Axios 介绍 三、实现图片上传 四、Java接收前端图片 Vue是一款流行的用于构建用户界面的开源JavaScript框架。它被设计用于简化Web应用程序的开发,特别是单页面应用程序。 Vue具有轻量级、灵活和易学的特点,使得开发者能够快速构建交互式的前端界

    2024年02月09日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包