收藏 分销(赏)

一种基于Metadata的图片文件批量整理工具_陈满.pdf

上传人:自信****多点 文档编号:595343 上传时间:2024-01-11 格式:PDF 页数:3 大小:2.44MB
下载 相关 举报
一种基于Metadata的图片文件批量整理工具_陈满.pdf_第1页
第1页 / 共3页
一种基于Metadata的图片文件批量整理工具_陈满.pdf_第2页
第2页 / 共3页
一种基于Metadata的图片文件批量整理工具_陈满.pdf_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、2023.7电脑编程技巧与维护1概述随着数码相机和智能手机的普及,越来越多的人开始使用这些设备拍摄照片,导致大量的数码图片存储在计算机或其他设备中。在管理这些数码图片的过程中,会遇到各种问题,例如,命名混乱、重复、无法找到特定的照片等。因此,一种高效的图片批量整理工具成许多用户的需求。2相关技术2.1MetadataExtractor 组件MetadataExtractor是一款开源组件,用于从多种文件格式中提取元数据(Metadata)信息,其中包括:图片、音频、视频等。MetadataExtractor可以提取多种类型的元数据信息,例如,Exif、IPTC、XMP等,可以帮助用户获取有关文

2、件的详细信息,例如,文件大小、拍摄时间、相机型号、GPS位置等。2.2Costura.Fody 插件Costura.Fody是一款基于.NET平台的开源项目,用于将应用程序中使用的所有依赖项打包到单个可执行文件中。通常情况下,当编写.NET应用程序时,需要将应用程序打包成一个可执行文件和一些依赖库文件。Costura.Fody插件可以将这些依赖库文件打包到可执行文件中,更加方便地部署和使用应用程序。3总体设计3.1文件处理整体流程3.1.1 获取所有待处理的文件当用户选择“待整理目录”“整理后目录”“未处理目录”,选择完“处理格式”“文件处理方式”“创建文件夹方式”“文件重命名方式”后,程序首

3、先会检查上述目录是否为空、目录是否存在,然后获取用户“待整理目录”文件夹里的所有文件。例如,这里 将 待 整 理 文 件 夹 为c:images,存 储 到 一 个List对象中,例如这里命名为allFileInfos,遍历待整理目录的时候,采取的是递归的方式,遍历c:images里面的子文件,循环判断是否是文件夹,如果是文件夹,则递归;如果不是文件夹,是文件属性,则添加到allFileInfos集合中。3.1.2根据用户筛选的文件类型获取所有文件的 Tag根据用户的文件筛选类型,是图片、视频,还是所有文件,分别进行处理。例如,处理图片类型。前面获取到了文件夹中的所有文件,存储在allFile

4、Infos集合中,但是没有进行筛选,那么,根据用户选择进行筛选。存储到一个List集合中,例如,对象命名为list。获取的最终的目标集合list后,进行循环遍历整个list集合,针对每一个文件,采用ImageMetadataReader.ReadMetadata方 法 进 行 获 取Tag属 性,存 储 在 一 个List集合中。3.1.3根据 List集合处理图片获取List集合后,继续遍历这个集合。根据集合中的myYear、myMonth属性,结合用户第一步选择的文件夹生成方案进行文件夹生成。生成文件夹后,进行文件处理操作。如果目标文件夹已存在该图片,则按照文件重复的规则进行处理。如果不存

5、在该图片,则直接拷贝。3.2重复文件处理规则系统软件会递归获取“待处理”目录下所有文件,含各级子文件夹内的所有文件,自动按年、月创建文整理后的文件夹,按时间将相应文件进行归类。作者简介:陈满(1983),男,本科,研究方向为信息系统集成开发;巩莎莎(1986),女,硕士,研究方向为法律基础和思想政治教育。一种基于 Metadata 的图片文件批量整理工具陈满,巩莎莎(华北理工大学,河北 唐山063210)摘要:介绍一种基于 MetadataExtractor 组件的图片批量整理工具,该工具可以通过读取图片的元数据,实现图片的自动重命名和批量整理。探讨了日常管理大量数码图片的常见问题,介绍了 M

6、etadataExtractor 组件及 Costura.Fody 插件的功能和使用方法;探讨了文件批量处理的整体流程,包括获取元数据、创建文件夹等系统实现步骤;总结了该工具的优点和局限性,包括高效性、精度性、灵活性和可扩展性等优点,以及元数据不完整、受图片格式限制和操作有限性等局限性。关键词:MetadataExtractor 组件;Costura.Fody 插件;图片整理137DOI:10.16184/prg.2023.07.0382023.7电脑编程技巧与维护当软件判断有重复文件时,会根据文件大小进一步判断是否真的重复,或仅是文件名重复。文件名重复,文件大小不一致时,会重命名文件然后按日

7、期放入整理后的文件夹中;当软件判断文件名一致、文件大小也一致时,会将文件重命名,放入未处理目录中,待自动处理结束后进行手工处理,避免因文件重名而丢失文件。3.2文件处理方式文件夹内的文件尽量控制在50 GB以内,以免因数据量过大而造成内存异常。选择待处理目录后,可进一步进行待整理文件格式的筛选。可以选择所有照片格式、所有视频格式,或者所有文件,也可以选择某单一格式的文件,按需选择即可。如果是复制方式,则源文件不会做任何改动,保持原样,所做操作均为复制,得到的是一套整理后复制文件。如果是移动方式且文件数量巨大,则可能占用空间较大,但速度较快,二者都不会丢失文件。4系统实现4.1MetadataE

8、xtractor 组件引用在C#中可以通过以下步骤使用MetadataExtractor组件。(1)使用NuGet包管理器或手动下载MetadataEx-tractor库,然后右键单击“引用”,浏览到MetadataEx-tractor组件位置,将其添加到C#项目中。(2)在代码中使用以下命名空间导入MetadataEx-tractor库,代码如下。using MetadataExtractor;using MetadataExtractor.Formats.Exif;4.2获取图片文件的 exif 数据读取图片的Metadata元数据,代码如下:IEnumerable di-rectorie

9、s=ImageMetadataReader.ReadMetadata(im-agePath);foreach(var directory in directories)foreach(var tag in directory.Tags)Console.WriteLine($directory.Name-tag.Name=tag.Description);if(directory.HasErrors)foreach(var error in directory.Errors)Console.WriteLine($ERROR:error);4.3批量创建文件夹批量创建图片文件夹有两种方式,具体如下

10、。(1)批量获取用户指定的文件,然后根据Tag创建图片文件夹。文件夹的创建操作是在系统获取所有文件对应的Tag对象后进行的,遍历整个List对象,在Tag对 象 中 包 含pureName,purePath,myYear,my-Month,myDate等属性,即文件名称、文件目录、年份、月份、日期、长度等信息。遍历List时,首先,会根据用户选择是否按照年、月创建还是按照年创建目录名称,来连接文件夹的路径。其次判断目标文件夹是否存在,如果存在,则不创建;如果不存在,则调用System.IO.Directory.CreateDirectory方法创建目标文件夹。(2)采用按照年月日自动创建方式。

11、把用户的图片文件最早日期设置为1972年,因为数码相机最早出现在1972年。采取自动创建方式创建文件夹目录,从当前年份到1972年之间,采取循环遍历的方式,根据用户选择,是年、月方式还是年的方式创建文件夹,等用户执行完图片整理操作后,再次进行空白文件夹的遍历,删除空白文件夹。4.4图片批量处理逻辑系统会获取用户选择的欲处理的文件类型,是图片或视频,还是所有类型,根据用户的选择获取目标文件夹下的所有文件,包括子文件夹。获取所有文件列表后,程序会遍历整个列表,(1)根据ShellObject对象的一个实例的CreationTime属性,获取文件的创建日期,存 储 于creationTime变 量

12、中;(2)尝 试 从Im-ageMetadataReader对象的ReadMetadata方法中获取所有文件元数据;(3)尝试提取日期属性,如果成功,则将日期存储于datetime变量中;(4)判断datetime是否小于creationTime,如果小于,则将小的日期存储于Tag对象的各属性中,包括MyYear、MyMonth、My-Date等。至此,获取了所有文件的元数据集合。再次根据用户的配置、操作方式是(复制还是移动),创建文件夹方式(是按照年、月还是按照年),以及如果文件重复,采用日期还是GUID等选项,进行每个文件的单独处理。4.5系统升级功能软件的系统升级功能采用开源的升级组件S

13、imple-Update来完成。SimpleUpdate是一个用于.NET应用程序的轻量级自动更新组件。使用SimpleUpdate可以为应用程序添加自动升级功能,让用户可以方便地升级应用程序,而不需要手动下载和安装。(1)引入SimpleUpdate类库,右击解决方案的“引用”选项,选择“添加引用”;(2)浏览到SimpleUp-date.dll类库,单击“确定”按钮完成类库引用。1382023.7电脑编程技巧与维护引入完成后,建立一个静态方法,初始化系统升级用到的各种回调函数,包括出错如何处理、发现新版本如何处理、没有新版本如何处理、版本过低如 何 处 理 等。在 使 用 自 动 升 级

14、功 能 时,直 接 使 用Updater.CheckUpdateSimple()方法即可调用自动升级功能。4.6Costura.Fody 插件使用(1)引入Costura.Fody。首先用Visual Studio 2017打开解决方案,依次选择“工具”“NuGet包管理”“管理解决方案的NuGet程序包”选项,会打 开“NuGet-解决方案”界面,在浏览选项下面的搜索框内输入“Costura.Fody”,自动搜索“Costura.Fody”插件,单击“Costura.Fody”插件,在右边的位置会出现项目名称,选中项目名称,单击“安装”,到安装“Costura.Fody”。(2)编译解决方案

15、。直接按照平常的习惯启动一下项目,这时“Costura.Fody”会完成打包,打包好的.exe文件在解决方案Debug根目录下,现在可以把这个.exe文件复制到任意一台计算机上,完美运行。4.7相关配置存储功能系统的用户配置信息包括待整理目录、整理后目录、未处理目录、处理方式、文件处理方式、创建文件夹方式、文件重命名方式等。在用户首次填写信息后,信息会自动存储在系统更新目录的ini文件中。当下一次系统启动时,在窗体的Load事件中,会检查是否存在该配置文件,如果存在,则尝试获取该配置文件中的相关配置信息;如果不存在,则读取配置信息,绑定到界面上。读取配置信息采用INIFIle配置类的IniRe

16、ad-Value方法,代码如下:INIFile ini=new INIFile(configpath);tbpath1.Text=ini.IniReadValue(path,path1);4.8异步处理功能在批量处理用户图片视频文件时,因为涉及到的数据量很大,如果简单同步操作,则会导致用户界面假死,出现停止响应现象,所以为了避免此类问题,需要用到异步处理功能。在系统中,异步处理功能采用BackgroundWorker组件。首先,在窗体类创建一个BackgroundWorker对象,这里命名为bw,然后在窗体的构造函数中设置Back-groundWorker对象的属性WorkerReportsP

17、rogress为true,允 许 其 报 告 进 度,同 时 注 册BackgroundWorker的DoWork、RunWorkerCompleted、ProgressChanged事件。DoWork事件中主要处理用户的最终单击事件,也就是用户把所有选项都选择好后单击处理按钮的事件由DoWork来完成。因为线程调用问题,在这个事件中不能出现引用窗体控件的情况。RunWorkerCompleted事件处理用户操作完成后需要触发的事件,可以在界面上通过Invoke方式显示提示信息。ProgressChanged事件表示用户操作的进度情况,可以在此实践中更新用户界面中的控件信息,包括进度条、Lab

18、el等控件信息。5结语提出了一种基于MetadataExtractor类库的图片文件批量整理工具,该工具能够通过读取Exif信息并按照年月重新组织和整理图片文件目录结构。该工具具有操作简单、速度快及批量处理、分类、备份等多种功能。对于需要整理大批量图片的用户来说,这无疑是一款非常实用的工具。未来将持续优化和扩展该工具的功能,更好地辅助用户进行图片文件的批量整理。参考文献1袁贵.基于深度学习的智能图片管理系统的设计与实现J.信息记录材料,2022,23(10):167-170.2窦瑞娟.图片信息管理系统的设计J.电子技术与软件工程,2021(16):170-173.3马林.互联网时代畜牧企业图片的管理方法J.中国畜牧业,2019(22):48-49.4王子涛.基于人脸聚类的图片管理系统的设计与实现D.北京:首都经济贸易大学,2019.5许婧.基于云存储的图片管理系统移动端的设计与实现D.北京:北京交通大学,2018.139

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 论文指导/设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服