1. 程式人生 > >(廿六)Python逼格:用 Python 發一個高逼格的朋友圈

(廿六)Python逼格:用 Python 發一個高逼格的朋友圈

分享一個非常騷氣的發朋友圈姿勢

效果如下

![這裡寫圖片描述](https://img-blog.csdn.net/20180908202720199?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1MzQzNTU3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

利用今天教給大家的 python 指令碼,把一張圖重新分隔成 9 張。上傳到朋友圈,最後就會形成上面的效果。可能有些人在朋友圈有看過類似的訊息,也知道某些軟體可以做到這樣的效果。但如果你自己利用 python 來實現,那種成就感是非常不一樣的。

所以今天我就手把手教大家如何利用 python 發一個高逼格的朋友圈。

程式思路

此次程式主要是利用 PIL(Python Image Libraty)這庫,來進行圖片的處理。

PIL 是一個功能非常強大的 Python 影象處理標準庫,但由於 PIL 只支援 Python2.7。如今很多 python 程式設計師都使用 Python 3.x,所以 PIL 在之前的基礎上分離出來一個分支,另外建立一個 Pillow 庫,以便支援 Python3.x。本程式在使用之前請確保已經安裝了 Pillow 庫。

程式首先把你要分隔的影象讀取到一個變數中,然後我們定義了一個 fill_image() 方法,用來填充影象讓原本大小不一的影象,重新變為一個長寬相同的正方形影象,方便之後處理。

通過 fill_image() 方法,我們就會得到新的一張正方形影象。隨後我們在利用 cut_image() 方法,把影象分隔成 9 張,因為微信朋友圈最多發 9 張圖片。

最後把這 9 張圖片儲存到本地檔案中,傳送到手機,就可以發到朋友圈了。

程式原始碼

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) 

使用

把程式中「file_path」變數改成你對應圖片的位置,執行程式,就會在原檔案下生成 9 張圖片。

![這裡寫圖片描述](https://img-blog.csdn.net/20180908203016281?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1MzQzNTU3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

再配上一句有逼格的話「人必有痴,而後有成」,發到朋友圈逼格滿滿!