程序思路:
此次程序主要是利用PIL(Python Image Libraty)這庫,來進行圖片的處理。
PIL是一個功能非常強大的python圖像處理標準庫,但由于PIL只支持python2.7。如今很多python程序員都使用python3.x,所以PIL在之前的基礎上分離出來一個分支,另外創建一個Pillow庫,以便支持python3.x, 本程序在使用之前確保已經安裝了Pillow庫。
程序首先把你要分隔的圖像讀取到一個變量中,然后我們定義了一個 fill_image() 方法,用來填充圖像讓原本大小不一的圖像,重新變為一個長寬相同的正方形圖像,方便之后處理。
通過 fill_image() 方法,我們就會得到新的一張正方形圖像。隨后我們在利用 cut_image() 方法,把圖像分隔成 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 = "2.jpg" #圖片保存的地址
image = Image.open(file_path)
#image.show()
image_new = fill_image(image)
image_list = cut_image(image_new)
save_images(image_list)
如果有興趣的話可以看一看Pillow庫的使用
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

