python编程*三角形图形创意图片_使用python的pil制作微信九宫格图片

[Python] 纯文本查看 复制代码#coding=utf-8

import os

from PIL import Image

import re

'''

使用PIL的Image进行图片裁剪,生成正方形的9宫格

1>获取图片的宽、高参数,生成一张新的正方形图

2>对新生成的正方形图片进行裁剪,生成9宫格

3>保存

'''

def full_img(img):

#获取image图像的宽、高属性

width, height = img.size

#比较图片的宽、高属性来确定新图片的边长

if width > height :

full_image_length = width

else :

full_image_length = height

#生成正方形图片

full_image = Image.new(img.mode, (full_image_length, full_image_length), color='white')

#将图片覆盖到正方形底图,居中

if width > height :

#获取两边间距

side_length = int((width - height) / 2)

#宽大于高,粘贴时左右边距0,上下边距是宽高差值的一半取整

full_image.paste(img, (0, side_length))

else :

side_length = int((height- width) / 2)

full_image.paste(img, (side_length, 0))

#执行完毕,返回正方形新图片

return full_image

# full_img(Image.open('./python/dist/鸡西酸汤子中毒已致8人死亡/006rUgk9gy1gjndnnooquj30c80oa0wv.jpg')).show()

def cut_img(img):

#获取image图像的宽、高属性

width, height = img.size

#进行三等分

item_width = int(width / 3)

#裁图的box列表

box_list = []

#Image.crop(left, upper, right, lower)左上右下,四个维度

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 = []

for box in box_list :

img_item = img.crop(box)

img_list.append(img_item)

#返回裁剪后的图片列表

return img_list

def save_img(img):

#index初始值为1

index = 1

for i in img :

i.save(str(index) + '.jpg', 'PNG')

index += 1

if __name__ == '__main__' :

#定义图片路径

print('请输入图片路径\n路径获取方式为:按住shift键后点击鼠标右键,然后点击复制为路径')

file_path = input()

file_path = file_path.split('"')[1].split('"')[0]

print('当前图片路径为 %s' % file_path)

# 创建文件夹

print('请输入想要保存的文件夹名字\n')

save_path = input()

os.mkdir(save_path)

os.chdir(save_path)

#打开图片

try:

image = Image.open(file_path)

#利用full_img函数生成正方形图片

image = full_img(image)

#利用cut_img函数裁剪生成图片列表

image_list = cut_img(image)

#利用save_img函数储存图片

save_img(image_list)

print('图片九宫已生成\nIt is show time!')

except Exception as e:

print(e)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值