發朋友圈我想是大多數都喜歡做的事情 ,因為可以分享自己的生活,記錄自己的生活,每當自己回頭翻看自己以前發的朋友圈的時候,心裡面感覺又是另一番回味….
都知道發朋友圈有”九宮格”的說話,特別對於有著”強迫症”的小夥伴而言,一共集齊九張圖,才能讓自己心滿意足…..但是有時候很尷尬,那麼這次小編就教一招,用Python輕鬆解決這個問題,而且還能讓你朋友圈B格提升一個檔次!
首先咱們要準備好Python環境和需要的模組!
沒有Python的朋友可以去百度下載安裝一下!
模組主要是用到 PIL 那是不是直接pip install PIL 呢
很明顯不可以,正確的安裝姿勢:
pip install pillow
咱們先看看效果圖吧!
是不是把一張完好的圖拆分成九張圖了呢?
那怎麼看看 朋友圈裡面是怎麼樣的
是不是感覺檔次瞬間就不一樣了呢!!
原圖是這樣的
from PIL import Image
import sys
#先將 input image 填充為正方形
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:#原圖寬大於高,則填充圖片的豎直維度 #(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
def cut_image(image):
width, height = image.size
item_width = int(width / 3) #因為朋友圈一行放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)
image_list = [image.crop(box) for box in box_list]
return image_list
#儲存
def save_images(image_list):
index = 1
for image in image_list:
image.save(str(index) + '.png', 'PNG')
index += 1
if __name__ == '__main__':
file_path = "4.jpg"
image = Image.open(file_path)
#image.show()
image = fill_image(image)
image_list = cut_image(image)
save_images(image_list)
想要一個良好的學習交流環境?
點“閱讀原文”即可加入