社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python写春联,这也太秀了吧!

马哥Linux运维 • 3 年前 • 446 次点击  

前言

import iofrom PIL import Imageimport numpy as npimport requests


def get_word(ch, quality):    #"""获取单个汉字(字符)的图片    #ch          - 单个汉字或英文字母(仅支持大写)    #quality     - 单字分辨率,H-640像素,M-480像素,L-320像素    #"""     fp = io.BytesIO(requests.post(url='http://xufive.sdysit.com/tk', data={'ch':ch}).content)    im = Image.open(fp)    w, h = im.size    if quality == 'M':        w, h = int(w*0.75), int(0.75*h)    elif quality == 'L':        w, h = int(w*0.5), int(0.5*h)


    
    return im.resize((w,h))


def get_bg(quality):    #"""获取春联背景的图片"""    return get_word('bg', quality)


def write_couplets(text, HorV='V', quality='L', out_file=None):    #"""生成春联     #text        - 春联内容,以空格断行    #HorV        - H-横排,V-竖排    #quality     - 单字分辨率,H-640像素,M-480像素,L-320像素    #out_file    - 输出文件名    #"""    usize = {'H':(640,23), 'M':(480,18), 'L':(320,12)}    bg_im = get_bg(quality)    text_list = [list(item) for item in text.split()]    rows = len(text_list)    cols = max([len(item) for item in text_list])    if HorV == 'V':        ow, oh = 40+rows*usize[quality][0]+(rows-1)*10, 40+cols*usize[quality][0]


    
    else:        ow, oh = 40+cols*usize[quality][0], 40+rows*usize[quality][0]+(rows-1)*10    out_im = Image.new('RGBA', (ow, oh), '#f0f0f0')    for row in range(rows):        if HorV == 'V':            row_im = Image.new('RGBA', (usize[quality][0], cols*usize[quality][0]), 'white')            offset = (ow-(usize[quality][0]+10)*(row+1)-10, 20)        else:            row_im = Image.new('RGBA', (cols*usize[quality][0], usize[quality][0]), 'white')            offset = (20, 20+(usize[quality][0]+10)*row)        for col, ch in enumerate(text_list[row]):            if HorV == 'V':                pos = (0, col*usize[quality][0])            else:                pos = (col*usize[quality][0],0)             ch_im = get_word(ch, quality)            row_im.paste(bg_im, pos)            row_im.paste(ch_im, (pos[0]+usize[quality][1], pos[1]+usize[quality][1]), mask=ch_im)          out_im.paste(row_im, offset)    if out_file:        out_im.convert('RGB').save(out_file)


    
    out_im.show()


text = '普天同庆 欢度春节'write_couplets(text, HorV='V', quality='M', out_file='普天同庆.jpg')12

text = '年尽岁除岁月如歌 冬去春来春光似画'write_couplets(text, HorV='H', quality='M', out_file='岁月如歌.jpg')

text = '人世间纵有百娇千红 唯独你是我情之所钟'write_couplets(text, HorV='H', quality='M', out_file='情之所钟.jpg')

文链接:https://blog.csdn.net/xufive/article/details/104059396

文章转载:Python编程学习圈

(版权归原作者所有,侵删)


点击下方“阅读原文”查看更多

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/127762
 
446 次点击