1 # 以中心裁剪图片
2 # 一个中国大陆身份证的尺寸是88mm*55mm,通常使用的身份证像素分辨率是336*256
3 def crop_image_by_center(input_image_path, width_mm=88, height_mm=55):
4 # 打开图片
5 image = Image.open(input_image_path)
6 image = ImageOps.exif_transpose(image) # 解析图片的 EXIF 中的方位信息,将图片转正
7
8 # 计算新的宽度和高度(像素单位)
9 width = int(width_mm / inch_to_mm * dpi)
10 height = int(height_mm / inch_to_mm * dpi)
11 # 计算原始图片的中心位置
12 center_x, center_y = (x / 2 for x in image.size)
13 left, upper = center_x - width / 2, center_y - height / 2
14 right, lower = center_x + width / 2, center_y + height / 2
15 image = image.crop(box=(left, upper, right, lower))
16
17 return image