文章

处理为规范的1寸图片尺寸

收集班级里的信息,要把图片批量插入到word里面,在word里面调整格式属实是很麻烦,而且效果还不好,索性用python把图片尺寸统一之后,再导入进去,就不会有任何问题了。

代码如下(先缩放,然后使用白色填充背景):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from PIL import Image
import os

# 设置目标尺寸(标准一寸尺寸)
target_size = (960, 1280)

# 设置图片文件夹路径
image_folder = 'D:/picture/origin/'

# 设置处理后的图片保存路径
output_folder = 'D:/picture/output/'

# 确保输出文件夹存在
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 遍历文件夹中的所有图片
for filename in os.listdir(image_folder):
    if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
        # 图片完整路径
        image_path = os.path.join(image_folder, filename)
        
        # 打开图片
        with Image.open(image_path) as img:
            # 获取图片原始尺寸
            original_size = img.size
            
            # 计算缩放比例
            scale_ratio_width = target_size[0] / original_size[0]
            scale_ratio_height = target_size[1] / original_size[1]
            scale_ratio = min(scale_ratio_width, scale_ratio_height)
            
            # 计算缩放后的尺寸
            new_size = (int(original_size[0] * scale_ratio), int(original_size[1] * scale_ratio))
            
            # 缩放图片
            img = img.resize(new_size, Image.Resampling.LANCZOS)
            
            # 创建白色背景图片
            background = Image.new('RGB', target_size, (255, 255, 255))
            
            # 计算粘贴位置
            left = (target_size[0] - new_size[0]) // 2
            top = (target_size[1] - new_size[1]) // 2
            
            # 将缩放后的图片粘贴到白色背景上
            background.paste(img, (left, top))
            
            # 保存处理后的图片
            output_path = os.path.join(output_folder, filename)
            background.save(output_path)
            print(f"Processed and saved: {output_path}")

print("All images have been processed.")
本文由作者按照 CC BY 4.0 进行授权