目录

横批

上联

下联

完整代码


“爆竹声中一岁除,春风送暖入屠苏。千门万户曈曈日,总把新桃换旧符。”

又到农历新年,家家户户张灯结彩,扫除,贴春联,处处洋溢着喜庆和欢乐。又是Python大显身手的时刻,今天有请它来写春联。

开始之前,先做一点准备工作:

  • 下载自己喜欢的字体
  • 下载自己喜欢的背景(最好640*640像素),在此我选择的是传统的烫金红纸
  • 安装 freetypenumpy 等第三方库【 FreeType 库是一个开源的、高质量且可移植的字体引擎;numpy 为开源的数值计算扩展,可用来存储和处理大型矩阵】

准备就绪,接下来,就看 Python 的了!

横批

上联

下联

完整代码

#写春联import freetype
import numpy as np
from PIL import ImageFont = str(input('请输入字体文件路径:'))
BG = str(input('请输入背景文件路径:'))def text2image(text, Font, size, color): '''将矢量字库相应文字转换为图像(默认size = 128,color = (0, 0, 0))'''face = freetype.Face(Font)face.set_char_size(size * size)    face.load_char(text)btm_obj = face.glyph.bitmapw, h = btm_obj.width, btm_obj.rowspixels = 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]g = np.ones(pixels.shape) * color[1]b = np.ones(pixels.shape) * color[2]im = np.dstack((r, g, b, pixels)).astype(np.uint8)return Image.fromarray(im)def write_couplets(text, horv, quality):'''   text        - 春联horv        - H-横排,V-竖排quality     - 单字分辨率,H-640像素,L-320像素'''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('RGB', (ow, oh))im_bg = Image.open(BG)if size < 640:im_bg = im_bg.resize((size, size))for i, w in enumerate(text):im_w = text2image(w, Font, size = tsize, color = (0, 0, 0))w, h = im_w.sizedw, dh = (size - w) // 2, (size - h) // 2if 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)    #输出png图片   right = str(input('请输入上联:'))
left = str(input('请输入下联:'))
central = str(input('请输入横批:'))if __name__ == '__main__':write_couplets(right, horv = 'V', quality = 'H')write_couplets(left, horv = 'V', quality = 'H')write_couplets(central, horv = 'H', quality = 'H')

注:

1、代码部分借鉴大神天元浪子,在此顶礼膜拜!

2、本文所用字体及背景均来自网络,为临时展示使用,版权归原作者。


Python 写对联相关推荐

  1. 2023年快到了,就简单用python写个对联吧

    人生苦短 我用python 我知道现在离过年还早~ 但是早点准备早点轻松~ Python写对联挺火的,但是代码又不是人人都用,那就直接写个界面打包一下呗~ 主要实现只要运行后输入上联下联.横批,然后自 ...

  2. 用python写一个自动生成春联的软件,打包exe

    文章目录 唠叨一下 效果展示 代码 打包exe可执行文件 唠叨一下 最近不是快过年了,Python写对联挺火的,但是代码又不是人人都用,那就直接写个界面打包一下呗~ 主要实现只要运行后输入上联下联.横 ...

  3. 快到春节了,我们来用python写一个自动对联生成器,过年在大家面前秀一手

    前言 跨年跨完了,马上就要迎来春节了,这不得秀一手? 那就直接开始春节的表演呗 勉勉强强来用python制作对联生成器吧 效果展示 这里的话,你自己想要啥春联主题是可以搜索滴,有些地方也是可以看着改的 ...

  4. 教你用人工智能写文章写歌词写对联

    最近一直在研究人工智能智能,从gpt2.transformers.bert.... 最后发现,其实对小白来说,人工智能并没有那么高大上,看代码像看天书.... 其实你只要会安装python,懂pip是 ...

  5. 鼠年春节,用 GPT-2 自动写对联和对对联

    鼠年春节临近,来试试新的基于 GPT2-Chinese 自动对联系统:自动写对联(输入开头进行对联自动生成)和自动对对联(输入上联自动写下联).老的自动对联功能是去年基于深度学习机器翻译模型上线的一个 ...

  6. 过年首秀 - 用python写一个自动生成春联的软件并打包exe

    前言 哈喽啊,我亲爱的铁铁们,I am back !! 别管,我也是阳过的人了,这么久都没有更新,今天就带来个小玩意吧 这不是过完圣诞就要过年了吗 这不得准备准备,春节的表演? 就勉强来一副对联吧 效 ...

  7. 【室友用一局王者荣耀的时间学会了用python写春联】

    目录 0.效果展示 1.导入模块 2.获取对应汉字内容及像素 3.生成并保存对联 2022年了,又到了贴对联的时间了,不得安排一波用python脚本写对联吗? 0.效果展示 竖排: 横批: 1.导入模 ...

  8. 用python写计算机专业_自学open cv,用Python写的,本人是一名学生党,因为我本专业不是搞计算机的_cc霜_学生党_教育_教育其他...

    自学open cv,用Python写的,本人是一名学生党,因为我本专业不是搞计算机的,所以一切从0开始,自己学习的时候就整理一些笔记,以防忘记了.

  9. Python写的代码打包成.exe可执行文件

    Python写的代码打包成.exe可执行文件 1. 安装pyinstaller 2. [在线生成icon](http://www.ico51.cn/) 3. 打包命令 pyinstaller -i x ...

最新文章

  1. python soket编程之一个ssh程序
  2. 错误:wasm streaming compile failed: CompileError: AsyncCompile: Wasm decoding failed
  3. helm部署hadoop报错解决方法
  4. 双击U盘时既能运行程序又能打开U盘
  5. php 组装二维数组,php实现快速对二维数组某一列进行组装的方法小结
  6. 前端学习(2352):view组件的使用
  7. ubuntu安装wine之后进不了系统
  8. JDBC学习笔记(6)——获取自动生成的主键值处理Blob数据库事务处理
  9. 卢伟冰曝Redmi K30 Pro搭载骁龙865,却惨遭交罚款
  10. 为制造业构建Teams Power App 1:Dataverse入门
  11. thinkphp引入PHPExcel类---thinkPHP类库扩展-----引入没有采用命名空间的类库
  12. 第二章 数学运算、数组、文字处理
  13. do...while(); 语句在宏定义中的应用。
  14. 上海工程技术大学c语言商店存货管理系统,商店存货管理系统课程设计.doc
  15. discuz论坛引入iframe
  16. 计算机录制音乐时减少环境干扰,个人想录音?怎样打造录音棚呢?
  17. mysql reopen table,MYSQL临时表关联Can't reopen table
  18. Linux0.11学习研究
  19. CTFSHOW 菜狗杯--WEB
  20. 百度数据可视化Sugar BI 数据自动补全

热门文章

  1. Android的webview加载本地html、本apk内html和远程URL
  2. 【C/C++学院】(8)全局函数和类成员函数转化/友元/操作符重载
  3. 得奖了^_^,感谢大家一直以来的支持。
  4. GC0064-51单片机手持可充电GP2Y0A21红外测距离测量报警倒车雷达防撞报警视力保护
  5. javamail 读取/发送exchange邮件
  6. 原VIPKID研发副总裁朱会离职
  7. 微信小程序前端拉取放激励广告全步骤教程
  8. 【UTAU插件】辅音速度重载
  9. #地图故事#教程2:如何制作分级颜色地图
  10. Dobbo微服务项目实战(详细介绍+案例源码) - 5.推荐好友列表/MongoDB集群/动态发布与查看