python 練習0000

zzzsdust發表於2019-04-09

要求

將你的 QQ 頭像(或者微博頭像)右上角加上紅色的數字,類似於微信未讀資訊數量那種提示效果。

程式碼實現

from PIL import Image, ImageFont, ImageDraw, ImageColor

def add_circle(image):
    width, height = image.size
    draw = ImageDraw.Draw(image)
    # 圓的半徑、橫縱座標
    r = 50
    x = width - r
    y = 50
    # 畫圓的位置 右上角 
    position = (x - r, y - r, x + r, y + r)
    # 顏色
    color = ImageColor.colormap.get('red')
    # 畫圓
    draw.ellipse(position, fill=color)
    return image

def add_num(image, num):
    if int(num) > 99:
        num = '99+'
    # 獲取圖片的大小
    width, height = image.size
    # 設定字型
    font = ImageFont.truetype('arial.ttf', 50)
    # 設定字型顏色
    font_color = ImageColor.colormap.get('white')
    # 將字型加到圖片上
    draw = ImageDraw.Draw(image)
    # 位置
    position = [(0, 0), (width - 65, 22), (width - 80, 22), (width - 90,22)]
    position = position[len(num)]
    draw.text(position, num, font=font, fill=font_color)
    return image

def generate(image_path, num):
    image = Image.open(image_path)
    # 現在原影象右上角畫一個紅色圓
    image = add_circle(image)
    # 在右上角寫數字
    image = add_num(image, num)
    # 儲存
    path = '.\\\\pic\\\\result.jpg'
    image.save(path)


if __name__ == '__main__':
    image_path = '.\\\\pic\\\\head.jpg'
    num = '100'
    generate(image_path, num) 

效果圖

相關文章