请你用python编写一段代码,实现将指定文件夹中的bmp图片按序号重新命名,指定文件夹中只有bmp图片。例如第一个bmp图片重命名的名字就是1,后缀不变。并在重命名时检测该bmp图片的分辨率,并把分辨率数据写入指定路径的txt文件中。例如第一幅bmp图片重命名为1.bmp,分辨率为800×600,则在txt文件第一行写入800,第二行写入600,以此类推。
时间: 2023-05-27 10:03:30 浏览: 158
以下是代码示例:
```python
import os
from PIL import Image
def rename_files_and_save_resolutions(folder_path, txt_path):
# 获取文件夹下所有bmp图片
bmp_files = [f for f in os.listdir(folder_path) if f.endswith('.bmp')]
bmp_files.sort() # 按文件名排序
# 循环重命名和保存分辨率
for i, bmp_file in enumerate(bmp_files):
# 构造新文件名
new_name = str(i+1) + '.bmp'
new_path = os.path.join(folder_path, new_name)
# 重命名bmp图片
os.rename(os.path.join(folder_path, bmp_file), new_path)
# 获取分辨率
im = Image.open(new_path)
width, height = im.size
# 写入txt文件
with open(txt_path, 'a') as f:
f.write(str(width) + '\n' + str(height) + '\n')
if __name__ == '__main__':
folder_path = '/path/to/folder'
txt_path = '/path/to/txt'
rename_files_and_save_resolutions(folder_path, txt_path)
```
解释:
1. 首先使用`os.listdir()`获取指定文件夹下的所有bmp图片,并按文件名排序。
2. 然后循环重命名bmp图片:构造新文件名,使用`os.rename()`进行重命名。
3. 在重命名时,使用Pillow库的`Image.open()`打开图片并获取分辨率,使用`size`属性获取宽度和高度。
4. 最后,将分辨率数据写入txt文件。使用`open()`函数打开txt文件,使用`write()`方法写入数据。注意,使用`a`模式打开txt文件,以便把数据写入到现有文件的末尾,而不是覆盖原有内容。
阅读全文