火影 发表于 2024-10-27 23:41:41

利用Python Pillow库生成九宫格图片

相信很多人看到过九宫格图片,一张完备的大图被分割成九张小图,在朋友圈和微博里一度成为流行。

https://img-blog.csdnimg.cn/img_convert/a136268ba6943030ce52b79ec4ac32eb.webp?x-oss-process=image/format,png
相比完备的大图,九宫格图文增添了一丝趣味和精致,也显得更有创意。
制作九宫格图片的工具有很多,下文用Python的PIL库来实现图片的九宫格切分。
切分有以下要求:
1、不管原图尺寸如何,切出来的九张图拼在一起后,需是一张正方形大图
2、尽可能不改变原图的清楚度
3、对切分后的九张图用数字序号命名,方便朋友圈或微博上传
说明下,这个小脚本实用性见仁见智,重要是方便初学者练习语法并建立爱好。
如果你有批量处理图片的需求,那么这个脚本或许对你有很大资助。
'''
朋友圈九宫格图片制作
工具库:Pillow
'''

# encoding=utf-8
from PIL import Image
import sys

# 第一步:先将原图填充为正方形
def fill_image(image):
    width, height = image.size
    # 选取原图片长、宽中较大值作为新图片的九宫格半径
    new_image_length = width if width > height else height
    # 生产新图片【白底】
    new_image = Image.new(image.mode, (new_image_length, new_image_length), color='white')
    # 将原图粘贴在新图上,位置为居中
    if width > height:
      new_image.paste(image, (0, int((new_image_length - height) / 2)))
    else:
      new_image.paste(image, (int((new_image_length - width) / 2), 0))
    return new_image


# 第二步:将图片切割成九宫格
def cut_image(image):
    width, height = image.size
    # 一行放3张图
    item_width = int(width / 3)
    box_list = []
    for i in range(0, 3):
      for j in range(0, 3):
            box = (j * item_width, i * item_width, (j + 1) * item_width, (i + 1) * item_width)
            box_list.append(box)
    image_list =
    return image_list


# 第三步:保存图片
def save_images(image_list,save_path):
    index = 1
    for image in image_list:
      image.save(save_path +str(index) + '.png', 'PNG')
      index += 1


if __name__ == '__main__':
    file_path = "e:\\图片\\新垣结衣.jpg"
    save_path = "e:\\图片\\九宫格\\"
    image = Image.open(file_path)
    image = fill_image(image)
    image_list = cut_image(image)
    save_images(image_list)
    print("{}张图片全部生成".format(len(image_list)))
上面不到50行代码,便实现了对图片的九宫格切分。你可以复制代码到本地,只需添加原图和生成图的路径,就能执行代码并得到结果。
我们看下生成好的九张图:

https://img-blog.csdnimg.cn/img_convert/2e38b59416347d9e0f0277aa49427ebb.webp?x-oss-process=image/format,png
再保存得手机里,发朋友圈时,依次按1~9顺序上传图片即可。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 利用Python Pillow库生成九宫格图片