最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python編寫春聯(lián)的示例代碼(支持行書隸書楷書)

 更新時間:2022年01月23日 10:10:45   作者:天元浪子  
這篇文章主要介紹了如何通過Python代碼編寫春聯(lián),其中春聯(lián)字體支持行書隸書楷書。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動手試一試

僅供學(xué)習(xí)編程技術(shù)之用,絕無侵犯字體權(quán)利人之權(quán)力的故意,特此聲明。

選擇矢量字庫

雖然有很多方法可以幫你呈現(xiàn)出系統(tǒng)支持的所有字體文件,我建議最直接的方式是去查看操作系統(tǒng)的字體目錄。以Windows為例,我直接在C:\Windows\Fonts這個路徑下找到了“華文隸書”這個字庫文件,查看屬性可知,該文件名為STLITI.TTF。找到了喜歡的字庫文件,只需要將其全路徑文件名替換到代碼中的FONT_FILE常量即可,不需要做其他操作

選擇一款喜歡的春聯(lián)背景圖案

還是以“龍鳳呈祥”這個圖案為例吧。如果換用其他的圖案,請確保圖案是.png格式(背景透明),且是方形的。同字體文件一樣,我們需要將這個背景圖案的全路徑文件名替換到代碼中的BG_FILE常量即可。

完整代碼

全部代碼總共70余行,使用方法請看注釋。

# -*- 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)):
    """使用指定字庫將單個漢字轉(zhuǎn)為圖像
    
    word        - 單個漢字字符串
    font_file   - 矢量字庫文件名
    size        - 字號,默認(rèn)128
    color       - 顏色,默認(rèn)黑色
    """
    
    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):
    """寫春聯(lián)
    
    text        - 春聯(lián)字符串
    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 = 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('歡度春節(jié)', horv='V', quality='H')
    write_couplets('國泰民安', horv='H', quality='H')

效果展示

到此這篇關(guān)于Python編寫春聯(lián)的示例代碼(支持行書隸書楷書)的文章就介紹到這了,更多相關(guān)Python春聯(lián)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中sys模塊功能與用法實例詳解

    Python中sys模塊功能與用法實例詳解

    這篇文章主要介紹了Python中sys模塊功能與用法,結(jié)合實例形式詳細(xì)分析了Python sys模塊基本功能、原理、使用方法及操作注意事項,需要的朋友可以參考下
    2020-02-02
  • 關(guān)于pandas-profiling的降級之旅

    關(guān)于pandas-profiling的降級之旅

    這篇文章主要介紹了關(guān)于pandas-profiling的降級之旅,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Python操作串口的方法

    Python操作串口的方法

    這篇文章主要介紹了Python操作串口的方法,以一個簡單實例分析了Python操作串口echo輸出的方法,需要的朋友可以參考下
    2015-06-06
  • python流水線框架pypeln的安裝使用教程

    python流水線框架pypeln的安裝使用教程

    這篇文章主要介紹了python流水線框架pypeln的安裝使用教程,通過安裝pip install pypeln,基本元素在文中給大家介紹過,需要的朋友可以參考下
    2021-05-05
  • Python的Asyncore異步Socket模塊及實現(xiàn)端口轉(zhuǎn)發(fā)的例子

    Python的Asyncore異步Socket模塊及實現(xiàn)端口轉(zhuǎn)發(fā)的例子

    asyncore模塊是封裝過的處理socket事件的模塊,采用異步的處理方式,這里我們講來講解Python的Asyncore異步Socket模塊及實現(xiàn)端口轉(zhuǎn)發(fā)的例子,需要的朋友可以參考下
    2016-06-06
  • Python中的pprint模塊

    Python中的pprint模塊

    本文介紹了 Python中的pprint模塊,pprint模塊包含一個“美觀打印機(jī)”,用于生成數(shù)據(jù)結(jié)構(gòu)的一個美觀的視圖。格式化工具會生成數(shù)據(jù)結(jié)構(gòu)的一些表示,不僅能夠由解釋器正確地解析,還便于人閱讀。輸出會盡可能放在一行上,分解為多行時會縮進(jìn),想了解具體內(nèi)容請參考下文
    2021-11-11
  • Python實現(xiàn)一個簡單的遞歸下降分析器

    Python實現(xiàn)一個簡單的遞歸下降分析器

    這篇文章主要介紹了Python如何實現(xiàn)一個簡單的遞歸下降分析器,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • Python 數(shù)據(jù)處理庫 pandas 入門教程基本操作

    Python 數(shù)據(jù)處理庫 pandas 入門教程基本操作

    pandas是一個Python語言的軟件包,在我們使用Python語言進(jìn)行機(jī)器學(xué)習(xí)編程的時候,這是一個非常常用的基礎(chǔ)編程庫。本文是對Python 數(shù)據(jù)處理庫 pandas 入門教程,非常不錯,感興趣的朋友一起看看吧
    2018-04-04
  • 詳解python的運算符與表達(dá)式

    詳解python的運算符與表達(dá)式

    這篇文章主要為大家介紹了python的運算符與表達(dá)式,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Python實現(xiàn)大樂透號碼隨機(jī)生成

    Python實現(xiàn)大樂透號碼隨機(jī)生成

    全國有很多彩民,其中購買最多的彩種分別是體彩大樂透和福彩雙色球。本篇文章將介紹Python實現(xiàn)彩票自由的全流程:隨機(jī)選取號碼+查看是否中獎,需要的可以參考一下
    2022-05-05

最新評論

汉阴县| 本溪| 双牌县| 广元市| 西宁市| 定兴县| 射洪县| 阳朔县| 定南县| 英山县| 西昌市| 阿坝| 灯塔市| 广昌县| 抚顺市| 封丘县| 大冶市| 精河县| 天镇县| 呼玛县| 本溪市| 华亭县| 峨山| 琼中| 新和县| 武清区| 米泉市| 青田县| 阜新市| 江永县| 礼泉县| 重庆市| 河南省| 宝应县| 沈丘县| 晋江市| 临沭县| 临潭县| 开鲁县| 疏附县| 正镶白旗|