用Python助女神发朋友圈

文 | 闲欢

来源:Python 技术「ID: pythonall」

爱美是人类的天性,特别是女性。她们不仅喜欢打扮自己,还喜欢晒圈儿分享美好的事物。今天就教大家一个朋友圈晒图利器——切割图片。

目标需求

我们要做的就是将一张完整的图片分割成9张小图片,制作成朋友圈九宫格的图片,从而在朋友圈晒出不一样的美景。

最终实现的效果对比如下:

对比

对比两个朋友圈,后面的九宫格逼格提升了一个数量级有木有!

实现原理

为了实现九宫格,我们需要将图片转换成正方形,这样切割之后效果最好。转换的方法是先创建一个正方形的图片,然后将原图居中贴在新图片上。

接着,我们针对新图片的尺寸,计算切割之后每张小图片的尺寸,然后将每张小图片的四个角的坐标计算出来,最后就根据这些坐标切割图片就行。

这里我们主要用到 PIL 库的 image 模块,也是我们处理图片经常用到的库,安装这里就不介绍了。

实现代码

下面我们来看看实现代码:

from PIL import Image




# 先将image填充为正方形
def fill_image(img):
    width, height = img.size
    # 选取长和宽中较大值作为新图片的
    new_image_length = width if width > height else height
    # 生成新图片[白底]
    new_image = Image.new(img.mode, (new_image_length, new_image_length), color='white')
    # 将之前的图粘贴在新图上,居中
    if width > height:
        # 原图宽大于高,则填充图片的竖直维度
        # #(x,y)二元组表示粘贴上图相对下图的起始位置,是个坐标点
        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




def cut_image(img):
    width, height = img.size
    # 一行放3张图
    item_width = int(width / 3)
    box_list = []
    # (left, upper, right, lower)
    for i in range(0, 3):
        for j in range(0, 3):
            print((i*item_width, j*item_width, (i+1)*item_width, (j+1)*item_width))
            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




def save_images(img_list):
    index = 1
    for img in img_list:
        img.save("./"+str(index) + '.png', 'PNG')
        index += 1




if __name__ == '__main__':
    image = Image.open('./mv.jpg')
    image.show()
    image = fill_image(image)
    image_list = cut_image(image)
    save_images(image_list)


我们的代码主要分为三个部分:转换图片、切割图片和保存图片。对应的就是上面的实现步骤。

最后,我们用一张美女图片来看看实现效果。首先,我们来欣赏一下这位美女:

切割前的美女

运行代码之后的小图片如下(由于图片太多,所以我直接拼装成了朋友圈的样式):

切割后的美女

为了保证最佳效果,处理前的图片尽量接近正方形哦!

昨天我运用这段代码,帮女神处理一张图片,她心满意足地晒了一把朋友圈,晚上还给我一个大大地吻,我红着脸装 X:小意思啦!

一段代码可以俘获一颗心,让她开心和满足,我看着那长满茧的指头,心里默默的告诉自己:值了!

总结

看完这个,还不赶紧去试试?不一定是女神图片,也可以切割其他的图片呢!大家如果觉得喜欢,点个“在看”分享给更多的朋友吧!

PS:公号内回复「Python」即可进入Python 新手学习交流群,一起 100 天计划!

老规矩,兄弟们还记得么,右下角的 “在看” 点一下,如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!

代码获取方式

识别文末二维码,回复:200728

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值