雲栖号: https://yqh.aliyun.com 第一手的上雲資訊,不同行業精選的上雲企業案例庫,基于衆多成功案例萃取而成的最佳實踐,助力您上雲決策!

000.效果預覽
001.建立圖像
RGBA 值是一組數字,
紅、綠、藍和alpha(透明度)
代表0(根本沒有)到255(最高)的整數
在 Pillow 中,
RGBA 值表示為四個整數值的元組。
例如,紅色表示為(255,0,0,255)
這種顔色中紅的值為最大,沒有綠和藍,
并且alpha 值最大,這意味着它完全不透明。
綠色:(0,255,0,255)
藍色:(0,0,255,255)
白色是各種顔色的組合:(255,255,255,255)
而黑色沒有任何顔色:(0,0,0,255)
靈感來源:2019新年倒計時動态海報系列
Pillow 提供ImageColor.getcolor()函數,
是以你不必記住想用的顔色的RGBA值。
該函數接受顔色名稱字元串作為第一個參數,
字元串'RGBA'作為第二個參數,
傳回一個RGBA 元組。
from PIL import ImageColor
ImageColor.getcolor('red', 'RGBA')
運作結果:
(255, 0, 0, 255)
本例中的圖像尺寸和顔色:
尺寸:1000*2160
顔色:(174,60,58,255)
相關代碼如下:
from PIL import Image, ImageDraw, ImageFont
import os
# 建立圖像,并設定尺寸和顔色
im = Image.new('RGBA', (1000, 2160), (174,60,58,255))
draw = ImageDraw.Draw(im)
002.設定字型
要設定字型和大小,
我們首先将檔案夾名稱儲存在fontsFolde中。
然後調用ImageFont.truetype(),
傳入我們想要的字型的.TTF 檔案,
之後是表示字型大小的整數。
将ImageFont.truetype()傳回的Font對象
儲存在arialFont這樣的變量中,
然後将該變量傳入text(),
作為最後的關鍵字參數。
# 使用使用的字型及字号
fontsFolder = 'D:/05.python_code/00.py_projects/new_year_last'
font1 = ImageFont.truetype(os.path.join(fontsFolder, 'wenzangshufang.ttf'), 580)
font2 = ImageFont.truetype(os.path.join(fontsFolder, 'SourceHanSerifCN-SemiBold.otf'), 90)
font3 = ImageFont.truetype(os.path.join(fontsFolder, 'SourceHanSerifCN-SemiBold.otf'), 180)
003.繪制矩形
rectangle(xy, fill, outline) 方法
繪制一個矩形
xy 參數是一個矩形元組,
形式為(left,top, right, bottom)。
left 和top 值指定了矩形左上角的x 和y 坐标,
right 和bottom 指定了矩形的右下角。
可選的fill 參數是顔色,将填充該矩形的内部。
可選的outline 參數是矩形輪廓的顔色。
# 繪制矩形
left = pos_x_3
top = 1750
right = pos_x_3 + txtSize_3[0]
bottom = 1700 + txtSize_3[1]
draw.rectangle((left, top, right, bottom), fill=(217, 217, 217, 255))
004.繪制文本
ImageDraw 對象還有text()方法,
用于在圖像上繪制文本。
text()方法有4 個參數:
xy參數是兩個整數的元組,指定文本區域的左上角
text 參數是想寫入的文本字元串
可選參數fill 是文本的顔色
可選參數font 是一個ImageFont 對象,
用于設定文本的字型和大小
因為通常很難預先知道一塊文本
在給定的字型下的大小,
是以ImageDraw 子產品也提供了textsize()方法。
textsize()方法傳回一個兩整數元組,
表示如果以指定的字型寫入圖像,
文本的寬度和高度。
# 計算各文本的放置位置
txtSize_1 = draw.textsize('距 離 新 年 還 有', font2)
pos_x_1 = (1000 - txtSize_1[0]) / 2
txtSize_2 = draw.textsize('天', font2)
pos_x_2 = (1000 - txtSize_2[0]) / 2
wenhou = ["除夕夜", "貼春聯", "把面發", "置新衣", "煮肉肉", "買年貨", "大掃除", "祭竈台"]
txtSize_3 = draw.textsize(wenhou[i-1], font3)
pos_x_3 = (1000 - txtSize_3[0]) / 2
# 設定文本放置位置,居中
draw.text((pos_x_1, 200), '距 離 新 年 還 有', fill=(217, 217, 217, 255), font=font2)
draw.text((pos_x_2, 1400), '天', fill=(217, 217, 217, 255), font=font2)
draw.text((pos_x_3, 1700), wenhou[i-1], fill=im_color[i-1], font=font3)
# 設定變化的文本屬性
txtSize_4 = draw.textsize(str(i), font1)
pos_x_4 = (1000 - txtSize_4[0]) / 2
draw.text((pos_x_4, 600), str(i), fill=(255, 192, 0, 255), font=font1)
005.儲存圖像到本地
儲存圖像到目前目錄中
命名為:dayx.png
# 儲存圖像
filename = 'day' + str(i) + '.png'
im.save(filename)
006.我是總結
參考了大佬的部分代碼,
利用pillow關于圖像處理的子產品,
加入了一些新的設計元素,
制作了新一版本的新年倒計時海報。
原文釋出時間:2020-1-17
本文作者:GitPython
本文來自阿裡雲雲栖号合作夥伴“
清風Python”,了解相關資訊可以關注“
”