Python黑科技05-练手小项目-让你的朋友圈变得不一般

2020-09-27  本文已影响0人  Tony_Pm

序言

努力让自己变得更好,并坚持对外输出价值,让别人因为你的言行而变得更好。
只有强大的我们才可以通过自身的努力去帮助他人解决更多的问题,这样不仅我们自身会拥有更加美好的人生,我们身边的人也会收获到更加美好的人生。

设计思路:
1、实现微信九宫格图像,一张完整的图需要裁减成9个小方块;小方块需要是正方形
2、切割小图片的时候 需要计算每张小图的尺寸,使其保持一致
3、计算每张小图片的四个角的坐标;通过坐标实现图片的切割

效果展示

image.png

第一步 :填充图像 先将image填充为正方形

from PIL import Image

# 第一步 :填充图像     先将image填充为正方形
def fill_image(img):
    width, height = img.size
    new_image_length = width if width > height else height
   # mode: 模式,通常用"RGB"这种模式
   # size:生成的图像大小
   # color:生成图像的颜色,默认为0,即黑色
    new_image = Image.new(img.mode, (new_image_length, new_image_length), color='white')
   # 判断如果原图的宽大于高,则填充图片的竖直维度
    if width > height:
        new_image.paste(img, (0, int((new_image_length - height) / 2)))
    else:
        new_image.paste(img, (int((new_image_length - width) / 2), 0))
   # 返回
    return new_image

if __name__ == '__main__':
    image = Image.open('./江疏影.png')
    fill_image(image)

第二步 : 裁剪及分割图像

# 第二步 : 裁剪、分割图像
def split_image(img):
    width, height = img.size
    item_width = int(width / 3)
    box_list = []
    # (left, top, right, bottom) 设置图像四元组坐标 (左,上,右,下)
    # 内循环 - 外循环 - 3 * 3 = 9
    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)
    """
    裁剪矩形,返回该图像的矩形区域
    """
    img_list = [img.crop(box) for box in box_list]

    return img_list

if __name__ == '__main__':
    image = Image.open('./江疏影.png')
    image = fill_image(image)
    split_image(image)

第三步 :保存图像

# 第三步 :保存图像
def save_images(img_list):
    index = 1
    for img in img_list:
        # img.save("./九宫格图片/"+str(index) + '.png', 'PNG')
        img.save("./九宫格图片/" + str(index) + '.png')
        index += 1

if __name__ == '__main__':
    save_images(image_list)

最终效果展示

image.png image.png

如果本文对你学习有所帮助-可以点赞👍+ 关注!将持续更新更多新的文章。

上一篇 下一篇

猜你喜欢

热点阅读