生活随笔
收集整理的這篇文章主要介紹了
用Python拼图发一个高逼格的朋友圈
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
來源:二胖( 公眾號:大數據前沿)?? 鏈接:
https://mp.weixin.qq.com/s/bnj5oOdL7iDEmIDlA8h8EA
?
除了可以處理規整的正方形圖片,還可以處理非規則的圖片。比如下面這張寬度遠大于高度的圖片,怎么處理呢?
?
很簡單,取寬和高之間的較大值,然后填充白色,就可以構造出一張正方形的圖片啦。
?
當然,想把一張圖片做成這樣子也很容易啦,現在很多手機上的圖片處理軟件都能實現。
?
PIL是一個功能非常強大的Python圖像處理標準庫,但是呢,由于PIL支持Python2.7,所以使用Python3的程序猿們又在PIL的基礎上分離出來了一個分支,創建了另外一個庫Pillow,是可以支持Python3的。Pillow兼容了PIL的大部分語法,使用起來也非常的簡單。
對應代碼如下:
?
# -*- coding: utf-8 -*-
from PIL import Image
import sys#將圖片填充為正方形
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:#原圖寬大于高,則填充圖片的豎直維度new_image.paste(image, (0, int((new_image_length - height) / 2)))#(x,y)二元組表示粘貼上圖相對下圖的起始位置else:new_image.paste(image, (int((new_image_length - width) / 2),0))return new_image#切圖
def cut_image(image):width, height = image.sizeitem_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)image_list = [image.crop(box) for box in box_list]return image_list#保存
def save_images(image_list):index = 1for image in image_list:image.save('./result/python'+str(index) + '.png', 'PNG')index += 1if __name__ == '__main__':file_path = "1.jpg"image = Image.open(file_path)#image.show()image = fill_image(image)image_list = cut_image(image)save_images(image_list)
github地址:
https://github.com/yangxuan0928/cut_image
?
在本地使用git clone命令將源碼下載下來,然后將要分解的圖片放在項目目錄里面。
依賴
Python 2.7
PIL: pip install pillow
Python 3
PIL: pip3 install pillow
修改代碼中:
file_path = "你的照片名字.照片后綴"
然后運行,然后到result目錄中去找生成的照片。
拼圖前:
拼圖后:
代碼非原創,我只是代碼的搬運工。
總結
以上是生活随笔為你收集整理的用Python拼图发一个高逼格的朋友圈的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。