前言:有借鑒過網(wǎng)上幾篇制作表情包的文章(時(shí)隔幾天地址就不貼了~),表情包原圖沒改帮非,只不過自己加了一些文字位置算法優(yōu)化怔檩。
1.先添加表情包背景圖,工程根目錄新建file目錄空猜,放入head.jpg/face.jpg
2.主要改動是加了對文中在圖中位置的智能匹配绽慈,可切割化恨旱,盡量偏向表情包中心,也可以繼續(xù)擴(kuò)展任意表情包背景的哦坝疼。
貼代碼~(組件沒有安裝的自己安裝)
#-*- coding:utf-8 -*-
import os
import pygame
from PIL import Image, ImageDraw, ImageFont
import time
#初始化
pygame.init()
#合成表情包背景
img = Image.open("file/head.jpg") #250*250
jgz = Image.open("file/face.jpg") #101*113
img.paste(jgz, (87, 57)) #左右搜贤,上下
#生成畫布
draw = ImageDraw.Draw(img)
#字體
ttfront = ImageFont.truetype('simhei.ttf', 24)
#配圖文字
text = input('請先點(diǎn)擊下方輸入?yún)^(qū)域填寫配圖文字\n一行盡量不超過8個(gè)字!\n換行請用空格代替\n最后按回車鍵結(jié)束:\n')
texts = text.split(' ')
count = 1
for text in texts:
# 左右畫布 一行最多8個(gè)字從30開始 25一個(gè)身位钝凶?那分配200個(gè)位置給8個(gè)字仪芒,前后各空置25 所以只要8個(gè)字要從開始位置為25
#4個(gè)位置總需要100 所以從200劃分掉字體的區(qū)域4*25 然后再除以2獲取前后空置 最后加上預(yù)留的25 從(200-4*25)/2 + 25
index_1 = (200-text.__len__()*25)/2 + 25
# 上下畫布 測試一個(gè)字20身位 預(yù)留5個(gè)身位 所以取25 起始位置為190
index_2 = 190
if count == 2:
index_2 += 25
draw.text((index_1, index_2), text, fill=(0, 0, 0), font=ttfront)
count+=1
#利用時(shí)間戳生成表情包name
time_int = time.time()
img_name = str(int(time_int))
path = os.path.abspath(os.curdir)
img_path = path + "\images\%s.jpg" % img_name
img.save(img_path)
print('表情包合成完成,請?jiān)谙旅媛窂讲榭?)
print(img_path)
print('^ ^ 謝謝使用~~~')
time.sleep(1.2)
3.根目錄也新建一個(gè)images目錄耕陷,用來存放生成表情包
4.先測試一下
這樣images就多了一張新的表情包
5.打包生成.exe程序
pyinstaller -F -c -D --icon=my.ico faceimg.py
(--icon=my.icod程序logo圖標(biāo)可以去掉掂名,也可以自己找一張)
dict文件夾里就會生成想要的exe程序了,重命名一下更利于快速找到exe哦