daowuya 发表于 2019-5-7 11:42

用python PIL库生成九宫格图片

非常重要【TIPs】python3.0x环境,选图片的时候,一定要选择规范等比例的(.jpg文件),不然在处理图片返回数值的时候,int方法会报错。图片名自定义,要与代码同一目录
from PIL import Image

image = Image.open('a.jpg')'''选择图片'''
width, height = image.size

#高和宽进行比较,较大的为新图片的长度
new_length = height if height > width else width

# 创建一张正方形空图片,底色为白色,
new_image = Image.new(image.mode, (new_length, new_length), color='white')

# 将要处理的图片粘贴到新创建的图片上,居中
if height > width: # 如果高度大于宽,则填充图片的宽度
    new_image.paste(image, (int((new_length - width) / 2)), 0)
else:
    new_image.paste(image, (0, int((new_length - height) / 2)))

# 朋友圈一排三张图片因此宽度切割成3份
new_length = int(new_length / 3)
# 用来保存每一个切图
box_list = []
for i in range(0, 3):
    for j in range(0, 3):
      # 确定每个图片的位置
      box = (j * new_length, i * new_length, (j + 1) * new_length, (i + 1) * new_length)# (left, top, right, bottom)
      box_list.append(box)
# 通过crop函数对图片进行切割
image_list =

for (index, image) in enumerate(image_list):
    image.save(str(index) + '.png', 'PNG')
print("九宫格图片生成完毕!")



Fris 发表于 2019-5-7 12:07

#高和宽进行比较,较大的为新图片的长度
new_length = height if height > width else width
可以改成:
#高和宽进行比较,较大的为新图片的长度
new_length = max(height,width)

hellokits 发表于 2019-5-7 15:20

daowuya 发表于 2019-5-7 15:47

Fris 发表于 2019-5-7 12:07
#高和宽进行比较,较大的为新图片的长度
new_length = height if height > wi ...
简洁代码{:1_893:}   

fengwolf3 发表于 2019-5-7 16:39

规范等比例的(.jpg文件) 这个有没有方便的方法?

gsjqwyl 发表于 2019-5-8 17:05

{:1_925:}这不是我公众号里的代码吗~
页: [1]
查看完整版本: 用python PIL库生成九宫格图片