三分钟时间教你用Python绘制春联

目录
  • 前言
  • 实现
  • 总结

前言

春联是中国传统文化中最具内涵的元素之一,它以对仗工整、简洁精巧的文字描绘美好形象,抒发美好愿望,是中国特有的文学形式,是华人们过年的重要习俗。每逢春节期间,无论城市还是农村,家家户户都要精选一副大红春联贴于门上,辞旧迎新,以增加节日的喜庆气氛。

据考证,这一习俗起于宋代,盛于明代。有据可查的最早的春联是“三阳始布,四序初开”,始见于莫高窟藏经洞出土的文物中,撰联人为唐人刘丘子,作于开元十一年(公元723年)。如今卖春联的景象是这样的:

当今时代的人,大多只是粗通文墨,毛笔字也基本不怎么会写。然而,对于美好生活的向往,那可是一点都不比古时文人墨客少。借助于代码,我们同样可以写出漂亮的春联,同样可以向家人老师朋友同学,送上我们最真诚的祝福和最美好的祈愿。

实现

下面,给大家展示一下,如何用Python写春联,全部代码大约70行(代码处可左右滑动查看)。

第1步:代码中需要导入的模块

import io
from PIL import Image
import numpy as np
import requests

第2步:下载字模

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))

第3步:下载龙凤呈祥背景底图

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

第4步:生成春联

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()

第5步:测试样例

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

总结

到此这篇关于三分钟时间教你用Python绘制春联的文章就介绍到这了,更多相关Python绘制春联内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 用python实现一幅春联实例代码

    目录 前言 代码展示 效果展示 总结 前言 过年了,家家户户都得贴春联,红红火火过大年~ 春联是天朝传统节日完美衔接了民族文化的产物,以美好的诗词文字表达美好愿望,是天朝特有文学形式绽放.也是天朝人民自古以来的过年习俗,家家户户都必不可少. 咱们作为程序员,不知道你们会不会写毛笔字,反正我小时候练过,但是现在不会写了.不过对于美好生活的憧憬,可不比李白杜甫等大佬少,咱们用代码也是可以写出漂亮的春联,一样的向亲人朋友送上咱们美好的祝福. 哈哈 Python 生成不出来,字体原因,懒得改了,就用派森

  • 利用Python代码制作过年春联

    目录 一.春联一 1.效果展示 2.代码展示 二.春联二 1.环境准备 2.效果展示 3.代码 一.春联一 1.效果展示 2.代码展示 index.html <!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <title>css3春联切换</title> <link rel="stylesheet&qu

  • Python制作春联的示例代码

    目录 1. 前言 2. 代码中需要导入的模块 3. 下载字模 4. 下载龙凤呈祥背景底图 5. 生成春联 6. 测试样例 6.1 普天同庆 欢度春节 6.2 年尽岁除岁月如歌 冬去春来春光似画 6.3 人世间纵有百娇千红 唯独你是我情之所钟 1. 前言 春联是中国传统文化中最具内涵的元素之一,它以对仗工整.简洁精巧的文字描绘美好形象,抒发美好愿望,是中国特有的文学形式,是华人们过年的重要习俗.每逢春节期间,无论城市还是农村,家家户户都要精选一副大红春联贴于门上,辞旧迎新,以增加节日的喜庆气氛.据

  • Python tkinter库绘制春联和福字的示例详解

    马上要过年了,用 Python 写一副春联&福字送给大家,本文我们主要用到的 Python 库为 tkinter,下面一起来看一下具体实现. 首先,我们创建一个画布,代码实现如下: root=Tk() root.title('新年快乐') canvas=Canvas(root,width=500,height=460,bg='lightsalmon') 看一下效果: 我们接着写上联,主要代码实现如下: for i in range(0,451): canvas.create_rectangle(

  • Python编写春联的示例代码(支持行书隶书楷书)

    目录 选择矢量字库 选择一款喜欢的春联背景图案 完整代码 效果展示 仅供学习编程技术之用,绝无侵犯字体权利人之权力的故意,特此声明. 选择矢量字库 虽然有很多方法可以帮你呈现出系统支持的所有字体文件,我建议最直接的方式是去查看操作系统的字体目录.以Windows为例,我直接在C:\Windows\Fonts这个路径下找到了“华文隶书”这个字库文件,查看属性可知,该文件名为STLITI.TTF.找到了喜欢的字库文件,只需要将其全路径文件名替换到代码中的FONT_FILE常量即可,不需要做其他操作

  • 如何用python编写一个生成春联软件

    目录 前言 效果展示 代码 打包exe可执行文件 总结 前言 最近不是快过年了,Python写对联挺火的,但是代码又不是人人都用,那就直接写个界面打包一下呗~ 主要实现只要运行后输入上联下联.横批,然后自动生成春联保存在代码文件夹,如果要打印出来也是可以的. 效果展示 输入对联,选择路径后点击开始生成春联即可. 代码 需要导入的模块 # 网络数据获取相关模块 import io # python IO 处理模块 from PIL import Image # 图像处理模块 import requ

  • 三分钟时间教你用Python绘制春联

    目录 前言 实现 总结 前言 春联是中国传统文化中最具内涵的元素之一,它以对仗工整.简洁精巧的文字描绘美好形象,抒发美好愿望,是中国特有的文学形式,是华人们过年的重要习俗.每逢春节期间,无论城市还是农村,家家户户都要精选一副大红春联贴于门上,辞旧迎新,以增加节日的喜庆气氛. 据考证,这一习俗起于宋代,盛于明代.有据可查的最早的春联是“三阳始布,四序初开”,始见于莫高窟藏经洞出土的文物中,撰联人为唐人刘丘子,作于开元十一年(公元723年).如今卖春联的景象是这样的: 当今时代的人,大多只是粗通文墨

  • 手把手教你使用Python绘制时间序列图

    目录 01从Quandl检索数据集 02绘制收盘价与成交量的关系图 03绘制烛台图 导读:分析时间序列数据的一种简单而有效的方法就是将时间序列数据可视化在一个图表上,这样我们就可以从中推断出某些假设.本文将以股价数据集为例,指导你从Quandl下载股价数据集,并将这些数据绘制在价格和成交量图表上.还将教大家绘制烛台图,比起直线图表,这将给我们更多的信息. 01从Quandl检索数据集 Quandl简介 Quandl是一个为金融.经济和另类数据服务的平台,这些数据由各种数据发布商提供,包括联合国.

  • 圣诞节教你用Python绘制爱心圣诞树

    心血来潮的一个想法,分享一下代码 代码 # -*- coding: utf-8 -*- """ Created on Sat Dec 12 12:29:09 2020 @author: haoyu """ import turtle as t import random # 爱心函数 # 将爱心分为两个半圆与一个正方形 # r为半圆半径,l = 2r为正方形边长 # 调整半径即可调整爱心大小 def loving_heart(r): l = 2

  • 手把手教你用python绘制热度图(heatmap)

    目录 1.简单的代码 2.添加X轴和Y轴标签和标题: 3.对右侧的色条(colorbar)进行调整: 4.修改色条的刻度值和标签的字体大小.颜色: 5.对热度图显示数值和添加网格线: 6. 定义热度图的配色板 总结 1.简单的代码 from matplotlib import pyplot as plt import seaborn as sns import numpy as np import pandas as pd #练习的数据: data=np.arange(25).reshape(5

  • 一篇文章教你学会使用Python绘制甘特图

    目录 优点 局限 一日一书 用来制作甘特图的专业工具也不少,常见的有:Microsoft Office Project.GanttProject.WARCHART XGantt.jQuery.Gantt.Excel等,网络上也有一些优质工具支持在线绘制甘特图. 可是这种现成的工具,往往也存在一些弊端,让编程人员不知所措.比如说,花里胡哨的UI,让人目不暇接,不知点哪个才好: 比如说,有些基于浏览器的图表需要掌握HTML.JS等编程语言,只会点Python的我直接被劝退: 再比如,进来就是注册.登

  • 10分钟教你用Python实现微信自动回复功能

     01 前言&&效果展示 相信大家都有忙碌的时候,不可能一直守在微信上及时回复消息.但微信又不能像QQ一样设置自动回复.无妨,今天,我们就来用Python实现微信的自动回复功能吧,并且把接收到的消息统一发送到文件助手里面,方便统一查看. 效果如下: 02 环境准备 Python版本:3.6.0 系统平台:Windows 10 X64 IDE:pycharm 相关模块: time模块: itchat模块: 以及一些Python自带的模块. 03 实现原理 其实原理很简单,主要是利用itcha

  • 10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径

    深度优先算法(DFS 算法)是什么? 寻找起始节点与目标节点之间路径的算法,常用于搜索逃出迷宫的路径.主要思想是,从入口开始,依次搜寻周围可能的节点坐标,但不会重复经过同一个节点,且不能通过障碍节点.如果走到某个节点发现无路可走,那么就会回退到上一个节点,重新选择其他路径.直到找到出口,或者退到起点再也无路可走,游戏结束.当然,深度优先算法,只要查找到一条行得通的路径,就会停止搜索:也就是说只要有路可走,深度优先算法就不会回退到上一步. 如果你依然在编程的世界里迷茫,可以加入我们的Python学

  • 教你利用Python+Turtle绘制简易版爱心表白

    一.效果 快放10倍 总共分为三部分,左上角的正文,下方的心形和右下角的署名 特别需要注意的一点是这种东西不但要装Python,还与分辨率有关(换个屏幕可能效果雪崩,因为用的是绝对坐标),因此并不建议实际拿去弄(哪怕能解决上述两个问题) 二.正文部分 效果: 本质是每写一行话,然后将坐标下移换行,再写一行,以此类推 # content就是该行的内容了,想些啥写啥吧 def drawLine(content, x, y, sleep=3): goto(x, y) write(content, fo

  • 教你怎么用python绘制dotplot

    一.前言 R语言不少库都可以方便的画dotplot,但是低频使用R这么多年,我依旧觉得R不是一门真正的编程语言.目前,在python中绘制dotplot貌似没有很轻量.方便的库,因此工作之余写了这个python_dotplot包,方便自己也希望能够方便他人吧. 二.安装 可以通过pypi快速安装: pip install python_dotplot 该package当然可能存在一定的bug,所以也会处于不断迭代的过程中,可以通过以下方式获得特定或最新版本 pip install python_

  • 三分钟python搭建支付宝三方支付

    目录 为什么使用三方支付? 支付宝支付的流程 配置流程 1.获取APPID 2.在线生成密钥 3.获取公钥 python项目中集成支付宝 总结 为什么使用三方支付?   再没有三方支付平台之前,用户发起支付请求的时候,用户要去和银行签约(转账),特别的不方便,为了解决这些问题,就有了三方支付,三方平台去完成签约,给用户节省时间. 支付宝支付的流程   商户拿到支付宝的公钥.自己的私钥(私钥加密.公钥解密),用私钥请求支付宝,支付宝解密.验签.进行支付处理,支付宝将处理的返回值传给商户,当支付成功

随机推荐