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

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

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

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

第1步:代码中需要导入的模块
第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.sizeif 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)*10out_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 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

用Python绘制春联,快整一个,给家人送上最真挚的祝福吧相关推荐

  1. python母亲节快乐代码_用 Python 送上特殊的母亲节祝福

    今天是母亲节,做儿女的自然要为母亲送上节日的祝福,如果自己在母亲身边的话,可以直接说几句祝福的话以及送一些小礼物什么的,要是不在母亲身边的话,可以打个电话问候一下. 当然了,作为一个程序员,除了上面的 ...

  2. python绘制时间节点事件图_在节点上绘制带有时间标签的图形

    我有一个(有向无环)图,这样每个节点都有一个离散的时间戳,也就是说,每个节点都有一个数字:1,2,3,4...在 图形可能有多个组件,并且时间戳随着图形的方向而增加.在 我把图作为netowrkx对象 ...

  3. python绘制图形沙漏_pytorch-pose一个用于二维人体姿势估计的PyTorch工具包。 - pytorch中文网...

    pytorch-pose PyTorch-Pose是2D单人姿态估计的一般流水线的PyTorch实现.其目的是为最流行的人体姿态数据库(如MPII人体姿态,LSP和FLIC)提供训练/推理/评估的接口 ...

  4. Python关于1、计算一个三位数每位上的数字的三次方之和 2、计算一个四位数每位上的数字的四次方之和

  5. 还没有表白神器?情人节来喽,快为心爱的她送上一份专属的礼物吧~

  6. 用Python+Qt+Java整一个百宝箱

    用Python+Qt+Java整一个百宝箱 需求分析 课堂期末大作业,需要用Python做一个小项目.我自己有一些小的想法以及网上也有许多好玩.有用的通过Python实现的小工具,于是打算做一个百宝箱 ...

  7. 利用Python绘制一个爱心

    利用Python绘制一个爱心 效果图: 代码部分: import turtle #导入turtle库 turtle.pensize(4)#设置画笔像素为4像素 turtle.pencolor(&quo ...

  8. 今天咱们用Python整一个植物大战僵尸游戏 | 附带源码

    <植物大战僵尸>是一款极富策略性的小游戏,可怕的僵尸即将入侵,唯一的防御方式就是栽种植物.此游戏集成了即时战略.塔防御战和卡片收集等要素.游戏的内容就是:玩家控制植物,抵御僵尸的进攻,保护 ...

  9. python 绘制一个太阳花图形

    python 绘制一个太阳花图形 python 绘制一个太阳花图形 from turtle import * color('red','yellow') begin_fill() while True ...

最新文章

  1. 模型也可以上网课?!一文看懂服务型蒸馏训练方案
  2. 安装sqoop1.4.6-cdh5.5.2
  3. 每日一条linux (1) -find
  4. c语言中void指针,C 语言 void指针
  5. 边缘计算用java_物联网技术和边缘计算
  6. centos minimal 安装无法自定义分区
  7. 一统江湖的大前端React.js-从开发者到工程师
  8. mysql5.1 utf8_编译安装mysql 5.1使用utf8解决乱码问题
  9. emacs php 支持,emacs支持golang吗
  10. c++中判断某个值在字典的value中_Python元组、字典、集合的简单介绍
  11. 【X240 QQ视频对方听不到声音】解决方法
  12. axure图表组件。echarts。 axure !important 二维码logo嵌入axure汉化美化定制。图表背景透明
  13. 如何获得本机ip地址
  14. 2020-09-24L1-016 查验身份证 (15分) 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,
  15. python 常用快捷键
  16. C# 学习笔记-Chart控件使用
  17. Futura字体和Logo设计实践
  18. 【记忆法】记忆法推荐书
  19. 今天花了点时间详细了解了一下WiFi
  20. 冰箱10分钟启动一次_冰箱正常多久启动一次

热门文章

  1. 做成一件事不易,且行且珍惜
  2. tb6612电机驱动软件开发(代码pid实现,调试,控制实现)
  3. 关于okhttp3网络框架的onfailure错误
  4. 网易笔试2020-8
  5. Unity使用科大讯飞-语音转写接口
  6. 「Android」开发小技巧合集
  7. web核心 4-response响应对象 servletContext对象 响应行响应体 请求转发 重新定向 从服务器下载与上传资源 切换验证码 网站统计访问次数
  8. leetcode刷题(53)——52. N皇后 II
  9. 中体彩软件研发笔试题
  10. 求圆锥的底面积,表面积,体积 -C语言初学者