目录

0.效果展示

1.导入模块

2.获取对应汉字内容及像素

3.生成并保存对联


2022年了,又到了贴对联的时间了,不得安排一波用python脚本写对联吗?

0.效果展示

竖排:

横批:

1.导入模块

PIL:

全称 Python Imaging Library,是 Python 平台一个功能非常强大而且简单易用的图像处理库。但是,由于 PIL 仅支持到Python 2.7,加上年久失修,于是一群志愿者在 PIL 的基础上创建了兼容 Python 3 的版本,名字叫 Pillow ,我们可以通过安装 Pillow 来使用 PIL。

PIL功能:

  • 图像归档(Image Archives):PIL非常适合于图像归档以及图像的批处理任务。你可以使用PIL创建缩略图,转换图像格式,打印图像等等。

  • 图像展示(Image Display):PIL较新的版本支持包括Tk PhotoImage,BitmapImage还有Windows DIB等接口。PIL支持众多的GUI框架接口,可以用于图像展示。

  • 图像处理(Image Processing):PIL包括了基础的图像处理函数,包括对点的处理,使用众多的卷积核(convolution kernels)做过滤(filter),还有颜色空间的转换。PIL库同样支持图像的大小转换,图像旋转,以及任意的仿射变换。PIL还有一些直方图的方法,允许你展示图像的一些统计特性。这个可以用来实现图像的自动对比度增强,还有全局的统计分析等。

io流(io stream):

流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出。

输入输出(IO)是指计算机同任何外部设备之间的数据传递。常见的输入输出设备有文件、键盘、打印机、屏幕等。数据可以按记录(或称数据块)的方式传递,也可以流的方式传递。所谓记录,是指有着内部结构的数据块。记录内部除了有需要处理的实际数据之外,还可能包含附加信息,这些附加信息通常是对本记录数据的描述。

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))
​
​
def get_bg(quality):"""获取春联背景的图片"""
​return get_word('bg', quality)
​

3.生成并保存对联

注意调节HorV的参量改变横排和竖排两种模式!

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()
​
​
text = '出门见喜 春照满院 五谷丰登 六畜兴旺'
write_couplets(text, HorV='H', quality='H', out_file='2022.jpg')
​

有趣吧!

快去试试吧!!!

​
​

【室友用一局王者荣耀的时间学会了用python写春联】相关推荐

  1. 两把王者荣耀的时间学会Python图片打码技能——「实验一小时」今晚开启!

    关注「实验楼」,每天分享一个项目教程 「 实验一小时 」今晚开启,实验楼技术天团带你一小时做一个项目. 今晚 7:30 ,曾任职于腾讯.盛大等一线互联网公司的天火老师,将在B站带来免费直播,带大家学习 ...

  2. 江西住建云实名认证怎么弄_王者荣耀无限时间怎么弄 2020年无限时间账号

    腾讯游戏都是有健康系统的,王者荣耀自然也不例外,王者还是第一批出健康系统的游戏,今年健康系统同时有时间限制和充值限制,未成年玩家一天最多只能玩1.5个小时,游戏现在有传闻无限时间账号,那么无限时间怎么 ...

  3. 王者荣耀服务器维护有时间限制吗,把成长守护平台的时间调了对王者荣耀的时间限制有效吗...

    问:把成长守护平台的时间调了对王者荣耀的时间限制有效吗 答:肯定没有用啊,王者荣耀是根据你玩的时间来限制的,对未成年人限制比较多. 腾讯规定在7月4日后,游戏中12周岁以下(含12周岁)未成年人每天限 ...

  4. 王者荣耀,时间吞噬巨兽

    王者荣耀是一款值得骂一顿的游戏,令人上瘾的排位赛机制.任务系统设计吞噬了大家大量的时间:层出不穷的皮肤.星元.新英雄和抽奖花费的是大家的金钱.我回头看了看我自己的数据,几个号加起来打了3000把左右, ...

  5. 少打一局王者荣耀就能上手Spring Cloud?!

    近两年刷爆技术圈的最热门技术当属微服务技术,其中成熟度最高的是Spring Cloud.那么如何快速上手并运用于业务的生产环境是个让技术996的难题.接下来,云框架就教妹子王者荣耀一样,教你快速上手S ...

  6. 王者荣耀游戏时间计算机制,王者荣耀:荣耀战力计算机制解析,如何提高到金牌乃至国服...

    原标题:王者荣耀:荣耀战力计算机制解析,如何提高到金牌乃至国服 每个英雄都对应有一个荣耀战力,战力分越高一定程度上代表着你对该英雄的理解越好,当分数高到一定程度上时,会获得荣耀称号,由低到高分为县级. ...

  7. 王者荣耀游戏时间计算机制,王者荣耀兵线的移动速度和各项属性是否会随着游戏时间加长而增长...

    王者荣耀兵线的移动速度和各项属性是否会随着游戏时间加长而增长,这是在夫子的进阶试炼中有这样一道题目,曾难倒了不少玩家.下面给大家带来的就是王者荣耀兵线机制详细解析,一起来看看游戏中兵线的具体机制吧! ...

  8. 从王者荣耀里我学会的前端新手指引

    在王者的世界里,不仅仅只有快乐,还能搞学习,让你成为快乐而又富有知识的人.这其中的功臣,这不得不说的就是它的新手指引. 为什么这么说呢?我们先来看几张图. 没错,上面的就是王者荣耀的新手引导,手把手教 ...

  9. 抓取王者荣耀英雄列表的爬虫笔记(python+requests)

    在开始这个内容之前,我们先来一张效果图: 实现它,需要几个过程: 调用王者荣耀助手的数据接口获取所有英雄的图片 通过迭代,把所有图片转换成二进制数据流 把这些数据导入MySQL数据库中 由于项目需求, ...

最新文章

  1. 2星|《约见投资人》:A股上市公司软文集
  2. 转:【AI每日播报】从TensorFlow到Theano:横向对比七大深度学习框架
  3. isamchk mysql_利用Myisamchk对MySQL数据表进行体检
  4. windows消息机制深入详解-1
  5. mysql启动关闭步骤_MYSQL的连接管理与启动关闭流程
  6. android listview 切换,Android:在ListView适配器中切换OnCheckedChangeListener
  7. 【渝粤教育】电大中专幼儿园课程论 (8)作业 题库
  8. shell脚本将mysql查询结果制作成csv格式
  9. 久未更 ~ 四之 —— Vsftpd出现 Failed to start Vsftpd ftp daemon错误
  10. Kotlin Android Studio 环境搭建
  11. Mac OS系统修改Hosts文件的方法
  12. 数字水印--给我的文件充当保护神
  13. springmvc源码阅读之启动加载(2)-----------初始化参数
  14. 1206_MISRA_C规范学习笔记_Rule 10.1 Rule 10.2
  15. DataGear 数据可视化看板整合前端框架Vue
  16. FFMpeg 滤镜中英文对照
  17. Jaca 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
  18. Oracle 11g重要特性
  19. 程序员加班看不上球赛崩溃,外卖小哥伸出援手:我帮你改代码
  20. All flavors must now belong to a named flavor dimension. Learn more at https://

热门文章

  1. 微信小程序反编译wxss文件缺失_小程序反编译
  2. LCD显示异常分析——开机闪现花屏
  3. css 让图片不停的转动
  4. 新手做自媒体,学会这五点轻松赚钱,新手小白怎么赚钱?
  5. 【cocos creater】9.仿《弓箭传说》- 子弹的碰撞
  6. Maya Mash系统节点简单介绍--Audio节点
  7. 关于如何保证SSH不断开或任务续连
  8. 对熊猫太过痴迷,日本人连手游都不放过......
  9. 灰度巡线传感器_灰度传感器的工作原理_灰度传感器调节方法
  10. 三国志战略版:Daniel_S6突破魏延的上限