使用"重新命名批量图像"

时间:2017-08-19 01:38:34

标签: python vba image sorting

我正在一个项目中工作,这需要我组织和分拣配电板(DB)的1000张图像 - 每个数据库将有10-15张图像。为了自动化该过程,我想使用创建的时间以块的形式重命名图像。

例如,特定数据库的所有图像将在另一个数据库的30秒内拍摄,任何比这更长的图像将构成不同的数据库,因此不同的“块”#34;的图像。

最初,我正在考虑编写一个VBA脚本,用每个数据库的个人名称创建所有单个文件夹,然后将所有相关图像转储到set文件夹中。然后使用python脚本将每个文件夹中的图像重命名为ie。 DBXXXX_1,2,3等等,但是这个解决方案仍然存在很多问题。

有人能提出更优雅的解决方案吗?即。是否可以使用python或VBA代码区分图像块(t> 30s =新块),然后提示输入DB的名称,并将其排序到单个文件夹?

任何帮助将不胜感激!

由于

2 个答案:

答案 0 :(得分:0)

我的任务不明确,所以我决定在pythonvba写两个简短的片段来帮助你开始

此代码会将C:\中的所有文件重命名为DBXXXX_1 ...,

VBA代码

Dim i as Integer, FileName as String, NewFileName as String
i = 1
FileName = Dir("C:\")
While FileName<>""
NewFileName = "DBXXXX_" & i
Name FileName as NewFileName
FileName = Dir()
i = i + 1
Wend

Python代码

import os
for i, filename in enumerate(os.listdir("C:/")):
    newfilename = "C:/DBXXXX_{i}".format(i=i)
    os.rename(filename, newfilename)

答案 1 :(得分:0)

不是一个完整的答案,但它应该可以帮助你开始。您可以使用jhead工具(here)非常简单地重命名图像或整个图像目录。

例如,要重命名名为iPhoneSample.jpg的文件,使其文件名成为自1970年1月1日(Unix纪元)以来的秒数,您可以执行以下操作:

jhead -n%s iPhoneSample.jpg 
iPhoneSample.jpg --> 1362819590.jpg

已将其重命名为1362819590.jpg

您可以看到拍摄图像的日期/时间:

jhead iPhoneSample.jpg

File name    : iPhoneSample.jpg
File size    : 2219100 bytes
File date    : 2017:08:20 11:47:41
Camera make  : Apple
Camera model : iPhone 4
Date/Time    : 2013:03:09 08:59:50
Resolution   : 2592 x 1936
Flash used   : No
Focal length :  3.8mm  (35mm equivalent: 35mm)
Exposure time: 0.0011 s  (1/914)
Aperture     : f/2.8
ISO equiv.   : 80
Whitebalance : Auto
Metering Mode: pattern
Exposure     : program (auto)
GPS Latitude : N 20d 50.66m  0s
GPS Longitude: E 107d  5.46m  0s
GPS Altitude :  1.13m
JPEG Quality : 96

请在远离主图像存储库的测试目录中复制一些示例文件,并尝试重命名所有文件:

jhead -n%s *.jpg

还有很多其他方法可以根据时间或特征重命名文件,如果你想看到更多的here,我只需要使用%s自1970年以来的秒数。

我猜你已经厌倦了Windows,但为了给你一个想法(或者如果你想安装awksort的Windows版本),在Linux / Unix下你可以得到一个目录列出文件名并将其按时间顺序排序,如下所示:

ls | sort -n 

然后您可以使用awk处理该列表,并在两次相差超过30秒时更新块/组号:

ls | sort -n | awk -F'.' 'BEGIN{g=0}{if(($1-prev)>30){g++};print g,$1; prev=$1}'

1 1362295676
1 1362295677        <--- same group as before since images only 1 second apart
2 1362307049
3 1362330568
4 1362391436
5 1362392032
6 1362396147
7 1362399189
8 1362399675
9 1362404200
10 1362486924
11 1362496052
12 1362496675
13 1362569635
14 1362746526
15 1362747304
16 1362756678
17 1362756849
18 1362757004
18 1362757020
19 1362758801
20 1362766499
21 1362812455
22 1362812496
23 1362818636
24 1362819216
24 1362819233        <--- same group as before since images only 17 seconds apart
25 1362819590
26 1363015134
26 1363015136        <--- same group as before since images only 2 seconds apart