用Python發一個高逼格的朋友圈【附代碼】

前陣子在網上看到這個有趣的教程,馬上就來實踐學習一下,并提供給有需要的朋友學習。

昨晚就敲了代碼并且發了朋友圈實驗了一下,用Candice女神鎮樓,效果如下:


效果還不錯吧?接下來馬上操作一下。


安裝PIL庫


在cmd命令行模式下,輸入命令:pip install pillow? 即可。(前提是先要把python程序安裝好)

這里有個坑要注意:需要先找到python安裝目錄下的pip包,然后再執行命令,否則會報錯無法執行。執行的目錄位置如下:




PIL是一個功能非常強大的Python圖像處理標準庫,但是呢由于PIL支持Python2.7,所以使用Python3的程序員又在PIL的基礎上分離出來了一個分支,創建了另外一個庫Pillow,是可以支持Python3的。

Pillow兼容了PIL的大部分語法,使用起來也非常的簡單。


代碼思路

接下來先簡單介紹整體思路:

核心代碼


完整的代碼如下:


# coding: utf-8

# Author: Mingjun Lei

from PIL import Image

# 先將 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')

????# 將之前的圖片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

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

? ? ? ? ? ? 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 boxin 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 ="1.jpg"? ? # 把目標圖片 input image 放到代碼所處的文件夾里

? ? image = Image.open(file_path)

????image = fill_image(image)

????image_list = cut_image(image)

????save_images(image_list)



讀更多的好書,拍更美的照片,寫更酷的代碼,遇見更有趣的人,愿望是實現從IT菜鳥到全棧工程師的蛻變。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容