基于Python开发简单的图片定位导出小程序

 更新时间:2025年09月24日 08:36:39   作者:Jack电子实验室  
在日常工作中,我们经常需要从大量图片文件中筛选出包含特定名称或编号的图片,所以本文将使用Python开发一个图片定位导出小程序,感兴趣的小伙伴可以了解下

在日常工作中,我们经常需要从大量图片文件中筛选出包含特定名称或编号的图片,比如从一批产品图片中找出特定型号的图片,或者从系列照片中提取特定编号的照片。手动查找不仅效率低下,还容易出错。今天我要分享一个自己开发的图片定位导出小程序,它能帮助你快速筛选并复制所需的图片文件。

工具功能介绍

这个图片定位导出工具具有以下特点:

  • 图形化界面操作,简单易用
  • 支持批量输入多个搜索关键词(每行一个)
  • 精确匹配图片文件名,避免部分匹配的误判
  • 自动创建目标文件夹并复制匹配的图片
  • 详细的结果反馈,包括成功复制的文件、未找到的关键词以及找到多个匹配的关键词
  • 支持多种图片格式(jpg、jpeg、png、gif、bmp、tiff、webp)

核心技术实现

开发环境

  • Python 3.x
  • 依赖库:tkinter(用于GUI)、os(文件操作)、shutil(文件复制)、re(正则表达式)

核心代码解析

1. 图片复制功能实现

核心函数copy_images负责处理图片的查找和复制逻辑:

def copy_images(search_terms, source_dir=None, target_dir=None):
    """复制包含指定名称的图片文件"""
    # 处理目录默认值
    if not source_dir:
        source_dir = os.getcwd()
    if not target_dir:
        target_dir = os.path.join(source_dir, "筛选出的图片")
    
    # 确保目标文件夹存在
    if not os.path.exists(target_dir):
        os.makedirs(target_dir)
    
    # 定义图片文件扩展名
    image_extensions = ('.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.webp')
    
    # 统计和跟踪变量
    copied_count = 0
    copied_files = []
    term_matches = {term.strip(): [] for term in search_terms if term.strip()}
    not_found_terms = []
    multiple_matches_terms = {}
    
    # 导入正则表达式模块
    import re
    
    # 遍历源目录中的所有文件
    for filename in os.listdir(source_dir):
        # 检查是否是图片文件
        if filename.lower().endswith(image_extensions):
            # 检查文件名是否包含任何搜索词
            for term in search_terms:
                term = term.strip()
                if term:
                    file_base = os.path.splitext(filename)[0]  # 获取不带扩展名的文件名
                    
                    # 精确匹配逻辑
                    is_match = False
                    if term == file_base:  # 完全匹配文件名
                        is_match = True
                    elif term in re.findall(r'\d+', file_base):  # 精确匹配文件名中的某个数字部分
                        is_match = True
                    elif f"{term}-" in filename or f"-{term}." in filename:  # 匹配特定格式
                        is_match = True
                        
                    if is_match:
                        # 记录匹配信息
                        term_matches[term].append(filename)
                        
                        # 复制文件
                        source_path = os.path.join(source_dir, filename)
                        target_path = os.path.join(target_dir, filename)
                        shutil.copy2(source_path, target_path)  # 保留文件元数据
                        copied_count += 1
                        if filename not in copied_files:
                            copied_files.append(filename)
    
    # 处理匹配结果
    for term, matches in term_matches.items():
        if not matches:
            not_found_terms.append(term)
        elif len(matches) > 1:
            multiple_matches_terms[term] = matches
    
    return copied_count, copied_files, target_dir, not_found_terms, multiple_matches_terms

这个函数的关键在于精确匹配逻辑,通过三种方式确保匹配准确性:

  • 完全匹配文件名(不含扩展名)
  • 精确匹配文件名中的数字部分(避免14匹配到140)
  • 匹配特定格式(如"term-“或”-term."的形式)

2. GUI界面实现

使用Tkinter创建图形化界面,让操作更加直观:

class ImageCopyApp:
    def __init__(self, root):
        self.root = root
        self.root.title("图片复制工具")
        self.root.geometry("600x500")
        self.root.resizable(True, True)
        
        # 创建界面元素
        main_frame = tk.Frame(root, padx=10, pady=10)
        main_frame.pack(fill=tk.BOTH, expand=True)
        
        # 说明标签
        instruction_label = tk.Label(
            main_frame, 
            text="请输入要查找的图片名称序列,每行一个。程序将复制包含这些名称的图片到新文件夹。\n如果输入的名称没有找到匹配,或者找到多个匹配结果,将会在结果中提示。",
            wraplength=580, 
            justify="left",
            pady=10,
            font=("SimHei", 10)
        )
        instruction_label.pack(fill=tk.X)
        
        # 输入框
        self.input_frame = tk.Frame(main_frame)
        self.input_frame.pack(fill=tk.BOTH, expand=True)
        
        self.search_text = scrolledtext.ScrolledText(self.input_frame, height=10)
        self.search_text.pack(fill=tk.BOTH, expand=True, pady=5)
        self.search_text.insert(tk.END, "XS977-14\nXS977-25\nXS977-26")  # 默认示例
        
        # 按钮
        button_frame = tk.Frame(main_frame)
        button_frame.pack(fill=tk.X, pady=10)
        
        self.copy_button = tk.Button(
            button_frame, 
            text="复制图片", 
            command=self.copy_images,
            width=15,
            height=2
        )
        self.copy_button.pack(side=tk.LEFT, padx=5)
        
        # 结果显示
        result_label = tk.Label(main_frame, text="操作结果:")
        result_label.pack(anchor=tk.W)
        
        self.result_text = scrolledtext.ScrolledText(main_frame, height=10)
        self.result_text.pack(fill=tk.BOTH, expand=True, pady=5)
        self.result_text.config(state=tk.DISABLED)

界面设计遵循简洁实用原则,主要包含三个部分:操作说明、关键词输入区和结果显示区。

3. 结果处理与反馈

程序会提供详细的操作结果反馈,包括:

  • 成功复制的文件数量和目标路径
  • 已复制的文件列表
  • 未找到匹配的搜索词
  • 找到多个匹配的搜索词及其匹配结果

如果哪个有问题 会做出提示

使用方法

运行程序,界面将显示一个文本输入框和操作按钮

在输入框中每行输入一个要查找的图片名称或编号(支持示例中的格式)

点击"复制图片"按钮

程序会在当前目录创建"筛选出的图片"文件夹,并将匹配的图片复制到该文件夹

操作结果会显示在下方的结果区域,包括成功复制的文件、未找到的关键词等信息

适用场景

  • 摄影师筛选特定编号的照片
  • 设计师整理系列设计图
  • 电商从业者提取特定产品图片
  • 任何需要从大量图片中筛选特定文件的场景

程序已经打包 即使电脑没有安装python也可以使用

到此这篇关于基于Python开发简单的图片定位导出小程序的文章就介绍到这了,更多相关Python图片定位导出内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Python中dict与set的使用

    详解Python中dict与set的使用

    这篇文章主要介绍了详解Python中dict与set的使用,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • 关于Python中字符串的各种操作

    关于Python中字符串的各种操作

    本文将重点介绍Python字符串的各种常用方法,字符串是实际开发中经常用到的,所有熟练的掌握它的各种用法显得尤为重要。需要的朋友可以参考下面文章内容
    2021-09-09
  • python中pip的安装与使用教程

    python中pip的安装与使用教程

    在安装pip前,请确认win系统中已经安装好了python,和easy_install工具,下面脚本之家小编给大家详细介绍python中pip的安装与使用教程,感兴趣的朋友一起看看吧
    2018-08-08
  • Python API len函数操作过程解析

    Python API len函数操作过程解析

    这篇文章主要介绍了Python API len函数操作过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • python3反转字符串的3种方法(小结)

    python3反转字符串的3种方法(小结)

    这篇文章主要介绍了python3反转字符串的3种方法(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • python的命名规则知识点总结

    python的命名规则知识点总结

    在本篇文章里小编给大家分享的是关于python的命名规则知识点总结,有需要的朋友们可以参考下。
    2019-10-10
  • Numpy如何检查数组全为零的几种方法

    Numpy如何检查数组全为零的几种方法

    本文主要介绍了Numpy如何检查数组全为零的几种方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • 基于BCEWithLogitsLoss样本不均衡的处理方案

    基于BCEWithLogitsLoss样本不均衡的处理方案

    这篇文章主要介绍了BCEWithLogitsLoss样本不均衡的处理方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • PyTorch-Forecasting一个新的时间序列预测库使用详解

    PyTorch-Forecasting一个新的时间序列预测库使用详解

    这篇文章主要为大家介绍了PyTorch-Forecasting一个新的时间序列预测库示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • python RSA加密的示例

    python RSA加密的示例

    这篇文章主要介绍了python RSA加密的示例,帮助大家更好的理解和使用加密算法,感兴趣的朋友可以了解下
    2020-12-12

最新评论