Python 将文件夹中的图片信息导入到 Excel 的表格

news2024/10/5 16:31:24

引言

在数据处理和管理的日常任务中,经常需要将文件夹中的图片文件信息(如文件名、路径、创建日期、大小、分辨率等)整理成一个 Excel 表格。这篇博客将介绍如何使用 Python 中的 wxPython 模块创建一个 GUI 应用,用户可以通过这个应用选择一个文件夹,并将其中的图片信息导入到 Excel 表格中。
C:\pythoncode\new\jpeginfoTOexcel.py

准备工作

在开始之前,请确保已安装以下 Python 模块:

  • wxPython:用于创建 GUI 界面
  • openpyxl:用于操作 Excel 文件
  • Pillow:用于处理图像文件,获取图片分辨率

使用以下命令安装这些模块:

pip install wxPython openpyxl Pillow

实现步骤

第一步:创建 wxPython 界面

首先,我们需要创建一个简单的 GUI 界面,允许用户选择一个文件夹,并点击按钮生成包含图片信息的 Excel 文件。

import wx
import os
from openpyxl import Workbook
from PIL import Image
from datetime import datetime

class ImageInfoApp(wx.Frame):
    def __init__(self, parent, title):
        super(ImageInfoApp, self).__init__(parent, title=title, size=(500, 300))
        
        panel = wx.Panel(self)
        vbox = wx.BoxSizer(wx.VERTICAL)
        
        self.dir_picker = wx.DirPickerCtrl(panel, message="Choose a directory")
        vbox.Add(self.dir_picker, flag=wx.EXPAND | wx.ALL, border=10)
        
        self.generate_btn = wx.Button(panel, label="Generate Excel")
        vbox.Add(self.generate_btn, flag=wx.EXPAND | wx.ALL, border=10)
        
        self.Bind(wx.EVT_BUTTON, self.on_generate_excel, self.generate_btn)
        
        panel.SetSizer(vbox)
        self.Centre()
        self.Show()
    
    def on_generate_excel(self, event):
        dir_path = self.dir_picker.GetPath()
        if not dir_path:
            wx.MessageBox('Please select a directory first', 'Error', wx.OK | wx.ICON_ERROR)
            return
        
        # Create a new Excel workbook and select the active worksheet
        wb = Workbook()
        ws = wb.active
        ws.append(['Filename', 'Path', 'Creation Date', 'Size (KB)', 'Resolution'])
        
        for root, dirs, files in os.walk(dir_path):
            for file in files:
                if file.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
                    file_path = os.path.join(root, file)
                    creation_date = datetime.fromtimestamp(os.path.getctime(file_path)).strftime('%Y-%m-%d %H:%M:%S')
                    size = os.path.getsize(file_path) / 1024  # Size in KB
                    
                    try:
                        with Image.open(file_path) as img:
                            resolution = f"{img.width}x{img.height}"
                    except Exception as e:
                        resolution = "N/A"
                    
                    ws.append([file, file_path, creation_date, size, resolution])
        
        save_path = os.path.join(dir_path, 'image_info.xlsx')
        wb.save(save_path)
        
        wx.MessageBox(f'Excel file created at {save_path}', 'Success', wx.OK | wx.ICON_INFORMATION)

if __name__ == '__main__':
    app = wx.App(False)
    frame = ImageInfoApp(None, title='Image Info to Excel')
    app.MainLoop()

代码解释
  1. 导入模块

    • wx:用于创建图形用户界面。
    • os:用于文件和目录操作。
    • openpyxl:用于创建和操作 Excel 文件。
    • PIL(Pillow):用于处理图像文件,获取其分辨率。
    • datetime:用于处理文件的创建日期。
  2. 创建 GUI 界面

    • ImageInfoApp 类继承自 wx.Frame,是我们的主窗口。
    • 界面包含一个目录选择器(wx.DirPickerCtrl)和一个按钮(wx.Button),用于选择目录和生成 Excel 文件。
    • 按钮绑定了 on_generate_excel 方法,该方法在用户点击按钮时执行。
  3. 生成 Excel 文件

    • 用户选择目录后,on_generate_excel 方法会遍历该目录及其子目录中的所有图像文件。
    • 获取每个图像文件的名称、路径、创建日期、大小和分辨率,并将这些信息写入到 Excel 文件中。
    • 最终生成的 Excel 文件保存在用户选择的目录中。

运行程序

将上述代码保存为一个 Python 文件(例如 image_info_to_excel.py),然后在终端或命令提示符中运行:

python image_info_to_excel.py

此时会弹出一个窗口,用户可以选择一个文件夹,并点击按钮生成包含图片信息的 Excel 文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

通过这篇博客,我们学习了如何使用 wxPython 创建一个 GUI 应用,从文件夹中提取图片信息并将其导入到 Excel 表格中。这种方法不仅可以用于图片文件,还可以根据需要扩展到其他类型的文件数据提取和整理。如果您有任何问题或建议,欢迎在评论区留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1690686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jmeter保存测试计划报错——Couldn‘t save test plan to file:

jmeter保存测试计划报错——Couldnt save test plan to file:。。。。。拒绝访问 一、问题描述二、分析三、结果 一、问题描述 Couldn’t save test plan to file:D:\Program Files\apache-jmeter-5.6.2\bin\线程组.jmx D:\Program Files\apache-jmeter-5.6.2\bin\线程组.jmx(…

2024电工杯A题完整代码论文分析

2024年电工杯数学建模竞赛A题论文和代码已完成,代码为B题全部问题的代码,论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求解(问题1模型的建立和求解、问题2模型的建立和求解、问题3模型的建立和求解)、模型…

【Mac】电脑任何来源无法打开的问题解决办法

前言 有小伙伴在安装本站软件过程中,遇到过运行脚本1提示 sudo: /etc/sudoers is world writable的问题,其实就是电脑任何来源无法打开。今天就来说一下解决办法。 问题现象 电脑运行「脚本1」时提示: // 错误内容sudo: /etc/sudoers is w…

Navicat 连接 OceanBase 快速入门 | 社区版

Navicat Premium(16.1.9或更高版本)正式支持 OceanBase全线数据库产品。OceanBase为现代数据架构打造的开源分布式数据库。兼容 MySQL 的单机分布式一体化国产开源数据库,具有原生分布式架构,支持金融级高可用、透明水平扩展、分布…

KVM虚拟化基础

一、虚拟化基础 1.传统物理机部署方案 IDC机房优点: IDC机房是分布式的,是全国连锁的。我们将物理服务器部署到IDC机房,由IDC机房帮我们上架服务,管理其内部的网络以及路由转发、服务器资源的分发;而且IDC机房带宽接…

加入MongoDB AI创新者计划,携手MongoDB共同开创AI新纪元

加入MongoDB AI创新者计划! MongoDB对AI创新和初创企业的支持既全面又广泛!无论您是领先的AI初创企业还是刚刚起步,MongoDB Atlas都是支持您愿景的最佳平台。 AI 初创者计划The AI Startup Track AI初创者计划为早期初创企业提供专属福利&…

顺序表及其应用

掌握顺序表的初始化,初始化、查找、插入、删除、遍历、查看实际长度等操作 内容 从键盘输入n个整数,创建顺序表。【创建长度为n的顺序表】从键盘输入1个整数x,在顺序表中查找x所在的位置。若找到,输出该元素所在的位置(即数组下标…

YOLOV10实时端到端目标检测

代码地址:GitHub - THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection 论文地址:https://arxiv.org/pdf/2405.14458 本文介绍了YOLO系列目标检测器在实时和高效方面的优势,但是仍然存在一些缺陷,包括依赖非极大值…

【Linux】icmp_seq=1 Destination Host Unreachable

执行ping 命令提示:From 192.168.XX.XX icmp_seq1 Destination Host Unreachable 这个错误消息通常表示以下几种情况之一: 网络连接问题:目标主机可能没有连接到网络,或者网络中的某个路由器无法将数据包转发到目标主机。 目标主…

08.1.jenkins安装方法

安装 配置官方下载源 #配置jenkins源 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key下载jak、jenkins服务 #下载jdk11环境,并且配置yu…

软考之信息系统管理知识点(3)

流水线:是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。 编译得过程 关系数据库是表的集合 …

基于yolov2深度学习网络的昆虫检测算法matlab仿真,并输出昆虫数量和大小判决

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022A 3.部分核心程序 .......................................................... for i 1:12 % 遍历结…

声量 2024 | 从小到大,有哪些好产品曾出现在我们生活里?

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 老段 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦 产品统筹 / bobo 场地支持 / 阿那亚 联合制作 / 声量The Power of Voice 特别鸣谢 / 深夜谈谈播客网络 本期节目录制于第二届「声量The Power of Voice」现场。 在…

【SqL】数据库脚本编写规范和指南

编写本文档的目的是保证在开发过程中产出高效、格式统一、易阅读、易维护的SQL代码。 1 编写目的 2 SQL书写规范 3 SQL编写原则 软件全套资料获取进主页或者本文末个人名片直接获取。

读人工智能时代与人类未来笔记13_网络57

1. jun背控制 1.1. 威慑的目的是通过威胁发动盒站来防止盒站 1.2. jun背控制的目的是通过限制甚至废除57(或57类别)本身来防止盒站真 1.2.1. 与盒不扩散相配合,以一整套详尽的条约、技术保障措施、监管和其他控制机制为支撑,所…

02-Linux【基础篇】

一、Linux的目录结构 1.基本介绍 Linux的文件系统采用层级式的树状目录结构,在此结构中的最上层是根目录"/",然后在此目录下再创建其他的目录 深刻理解Linux树状文件目录是非常重要的 记住一句经典的话:在Linux世界里&#xff…

Golang | Leetcode Golang题解之第110题平衡二叉树

题目: 题解: func isBalanced(root *TreeNode) bool {return height(root) > 0 }func height(root *TreeNode) int {if root nil {return 0}leftHeight : height(root.Left)rightHeight : height(root.Right)if leftHeight -1 || rightHeight -1 …

二手车经营效率罗盘,用经营效率罗盘玩转二手车生意

课程下载:https://download.csdn.net/download/m0_66047725/89292198 更多资源下载:关注我。 带你了解不一样的二手车圈让二手车经营更高效 课程介绍 随着时代不断发展,二手车行业迎来了快速变革期。二手车有着一车一况、一车一价非标和价…

MCF-Microbial Cell Factories

文章目录 一、期刊简介二、征稿信息三、期刊表现四、投稿须知五、投稿咨询 一、期刊简介 Microbial Cell Factories 是一份开放的同行评审期刊,涵盖了与微生物细胞作为重组蛋白和天然产物的生产者或作为工业兴趣的生物转化的催化剂的开发、使用和研究相关的任何主题…

一、Elasticsearch介绍与部署

目录 一、什么是Elasticsearch 二、安装Elasticsearch 三、配置es 四、启动es 1、下载安装elasticsearch的插件head 2、在浏览器,加载扩展程序 3、运行扩展程序 4、输入es地址就可以了 五、Elasticsearch 创建、查看、删除索引、创建、查看、修改、删除文档…