Python 利用pillow库实现将图片切割成可发朋友圈的九宫格图片

先来看下原图与最终效果图
原图.jpg

九宫格.png

接下来看实现

  1. 首先安装Pillow库

终端运行命令:

pip3 install pillow

2 实现思路

读取图片 -> 将图片填充为正方形 -> 切割成九宫格 -> 保存图片 -> 完成

3 代码实现

1、导入依赖库

from PIL import Image

2、填充图片为正方形

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')

    # 将之前的图片input image 粘贴在新图上,居中
    if width > height: # 原图宽大于高,则填充图片的竖直维度  #(x,y)二元组表示粘贴上图相对下图的起始位置,是个坐标点
        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

3、切割图片

def cut_image(image):

    width, height = image.size

    item_width =int(width /3) # 因为朋友圈一行放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) # (left, top, right, bottom)

            box_list.append(box)

    image_list = [image.crop(box) for box in box_list]

    return image_list

4、保存图片

def save_images(image_list):

    index = 1

    for image in  image_list:

        image.save(str(index) + '.png', 'PNG')

        index += 1

5、 使用示例

if __name__ == '__main__':
    file_path = "1.jpg"  # 把目标图片 input image 放到代码所处的文件夹里

    image = Image.open(file_path)
    image = fill_image(image)

    image_list = cut_image(image)

    save_images(image_list)

** 到此,完成了全部功能,可以拿去实验了 **

参考资料
 用Python发一个高逼格的朋友圈【附代码】  


源码下载地址
源码


跑步 + 素食 + 编码

猜你喜欢

转载自blog.csdn.net/guo_hongjun1611/article/details/85273627