最新版的Python寫春聯,支援行書隸書楷書,不再有缺失漢字
# -*- coding: utf-8 -*-
import os
import freetype
import numpy as np
from PIL import Image
FONT_FILE = r'C:\Windows\Fonts\STLITI.TTF'
BG_FILE = r'D:\temp\bg.png'
def text2image(word, font_file, size=128, color=(0,0,0)):
""" 使用指定字型檔將單個漢字轉為影像
word - 單個漢字字串
font_file - 向量字型檔檔名
size - 字號,預設 128
color - 顏色,預設黑色
"""
face = freetype.Face(font_file)
face.set_char_size(size*size)
face.load_char(word)
btm_obj = face.glyph.bitmap
w, h = btm_obj.width, btm_obj.rows
pixels = np.array(btm_obj.buffer, dtype=np.uint8).reshape(h, w)
dx = int(face.glyph.metrics.horiBearingX/64)
if dx > 0:
patch = np.zeros((pixels.shape[0], dx), dtype=np.uint8)
pixels = np.hstack((patch, pixels))
r = np.ones(pixels.shape) * color[0] * 255
g = np.ones(pixels.shape) * color[1] * 255
b = np.ones(pixels.shape) * color[2] * 255
im = np.dstack((r, g, b, pixels)).astype(np.uint8)
return Image.fromarray(im)
def write_couplets(text, horv='V', quality='L', out_file=None, bg=BG_FILE):
""" 寫春聯
text - 春聯字串
bg - 背景圖片路徑
horv - H- 橫排, V- 豎排
quality - 單字解析度, H-640 畫素, L-320 畫素
out_file - 輸出檔名
"""
size, tsize = (320, 128) if quality == 'L' else (640, 180)
ow, oh = (size, size*len(text)) if horv == 'V' else (size*len(text), size)
im_out = Image.new('RGBA', (ow, oh), '#f0f0f0')
im_bg = Image.open(BG_FILE)
if size < 640:
im_bg = im_bg.resize((size, size))
for i, w in enumerate(text):
im_w =外匯跟單gendan5.com text2image(w, FONT_FILE, size=tsize, color=(0,0,0))
w, h = im_w.size
dw, dh = (size - w)//2, (size - h)//2
if horv == 'V':
im_out.paste(im_bg, (0, i*size))
im_out.paste(im_w, (dw, i*size+dh), mask=im_w)
else:
im_out.paste(im_bg, (i*size, 0))
im_out.paste(im_w, (i*size+dw, dh), mask=im_w)
im_out.save('%s.png'%text)
os.startfile('%s.png'%text)
if __name__ == '__main__':
write_couplets(' 普天同慶 ', horv='V', quality='H')
write_couplets(' 歡度春節 ', horv='V', quality='H')
write_couplets(' 國泰民安 ', horv='H', quality='H')
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2853834/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SSL證書屬於數字證書嗎?數字證書有哪些
- 數字證書不僅有SSL證書,數字證書型別科普大全型別
- 文言書信書寫指南
- DPOS 共識演算法 - 缺失的白皮書演算法
- SSL數字證書是什麼?SSL數字證書具體有什麼作用?
- 贈書,10本Python好書Python
- SSL數字證書有什麼功能?為什麼需要SSL證書?
- 數字證書
- 有想考Weblogic證書的聯絡warehouseWeb
- 書寫高效sqlSQL
- Python寫春聯(turtle版)Python
- Python書籍|分享一本Python的書籍Python
- 《寫給大家看的設計書》讀書筆記筆記
- 對外版IT圖書漢譯的建議
- 2 JS的書寫位置JS
- 《寫給大家看的web設計書》讀書筆記Web筆記
- go-自籤ca證書,客戶端數字證書,服務端數字證書Go客戶端服務端
- 數字證書原理
- Python書單Python
- 書屋app技術支援APP
- CSS HACK 如何書寫CSS
- css書寫規範CSS
- Markdown 書寫規範
- Markdown書寫規範
- https數字證書作用和數字證書是否可以登出?HTTP
- 有沒有通用的SSL證書
- 開發申請的書寫
- SSL證書的分類有哪些?如何選擇SSL證書?
- 有了它,免費下載英文專業書籍不再煩惱!
- 行,這本 Python 書徹底火了!Python
- 快過年了,用Python寫副春聯&福字送給你~Python
- 需要PMP證書的聯絡warehouse
- 數字證書掃盲
- 我的新書出版啦!和大家聊聊寫書的酸甜苦辣新書
- 有關智慧卡的書籍
- mysql 中sql語句關鍵字的書寫順序與執行順序MySql
- 用“Whitespace”程式語言編寫無字天書
- python電子書Python