写春联pyrequestsPILmatplotlib
1 效果
2 说明
=====
2.1 参考来源https://blog.csdn.net/xufive/article/details/104059396
2.2 修改:对源代码的垂直对联V进行适当修改,用matplotlib展示图片。
3 代码
=====
3.1 第1步:导入模块import io import requests from PIL import Image import matplotlib.pyplot as plt #用来展示图片
3.2 第2步:定义函数,获取在线汉字样式def get_word(ch, quality): """获取单个汉字(字符)的图片 ch - 单个汉字或英文字母(仅支持大写) quality - 单字分辨率,H-640像素,M-480像素,L-320像素 """ # 把请求到的数据转换为Bytes字节流 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.3 第3步:获取对联背景图def get_bg(quality): """获取春联背景的图片""" return get_word("bg", quality)
3.4 第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) #列,一般是2 cols = max([len(item) for item in text_list]) if HorV == "V": #40+cols是与下边的距离,40+rows是与左边的距离 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") #春联的画布的底色是黄色,大小 out_im = Image.new("RGBA", (ow+2000, oh), "yellow") for row in range(rows): if HorV == "V": #row_im = Image.new("RGBA", (usize[quality][0], cols*usize[quality][0]), "white") row_im = Image.new("RGBA", (usize[quality][0], cols*usize[quality][0]), "yellow") #20是与上面的距离 #offset = (ow-(usize[quality][0]+10)*(row+1)-10, 20) #+4000是与左边的距离,左边对联 #+2000是与左边距离,右边对联 offset = (ow-(usize[quality][0]+2000)*(row+1)+4000, 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) #改进一下,用matplotlib显示图片 imgxx = plt.imread(out_file) plt.imshow(imgxx) plt.axis("off") plt.show() #用image显示 #out_im.show()
3.5 第5步:改成终端输入对联文字text=input("请输入对联:") #text = "普天同庆 欢度春节" #保存和显示图片 write_couplets(text, HorV="V", quality="M", out_file="chunlian.jpg") """ 例如:注意上联和下联之间有一个空格 爆竹声声辞旧岁 和风送暖迎新春 """
4 简洁完整的代码:import io import requests from PIL import Image import matplotlib.pyplot as plt def get_word(ch, quality): 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): 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+2000, oh), "yellow") for row in range(rows): if HorV == "V": row_im = Image.new("RGBA", (usize[quality][0], cols*usize[quality][0]), "yellow") offset = (ow-(usize[quality][0]+2000)*(row+1)+4000, 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) imgxx = plt.imread(out_file) plt.imshow(imgxx) plt.axis("off") plt.show() text=input("请输入对联:") write_couplets(text, HorV="V", quality="M", out_file="chunlian.jpg")
来写春联
孕25周啦前才前天做的糖筛昨天下午才出的结果。本来又测了骨密度有点缺钙啊,又赶紧买了钙片看来得每天吃了,也又买了复合的维生素片。一开始取糖筛的结果还以为是血糖高那,心里在犯嘀咕怕重做又怕是以
孕34周4天整个孕期都是自己照顾自己还要接送大宝上下学还要买菜做饭。老公在外地打工,幸好整个孕期还算平稳。检查都正常这样他也能在那边踏实工作赚钱,距离预产期还有38天了时间过得好快啊,预产期是
一碰就怀孕的女性,一般有4个特质,看看你占了几个?大家好,我是布谷妈孕育这一过程,虽说辛苦,但当小宝宝到来时,却又觉得一切都值。有时候回想起那段历程,总觉得是人生中既难忘又甜蜜的一段时光。不过,也有些妈妈会因为怀孕这件事,烦心不已
那年宝贝出生昨日录取通知书的后续,2015年我作为高龄产妇,发生了很多事情。那年的夏天来的特别早,气温上升的很快,5月份已经有30以上了。随着月份的增长,我每天昏昏欲睡,五月初的时候我已经怀孕
通过绘画分析了解青春期孩子的心理青春期(1319岁)是孩子成长中一个非常重要的阶段。这个阶段无论是孩子的身体还是心理都会发生很大的变化,今天跟大家分享的话题就是利用绘画分析来了解青春期孩子的心理。大家学了以后,一
如何塑造孩子的天性科学素养学习是一个人的天性,无论是成人还是孩子,激发孩子学习的天性,将会对孩子的人生产生积极的影响。从明年开始就要实施高考改革,高考一个重大的改变就是取消文理分科,也就是说孩子不管将来走向
共赢高考拥抱梦想练习指导语同学们好,欢迎一起来做拥抱梦想练习。现在请自然的站立,双脚微微岔开与肩同宽,感受一下双脚踩在大地脚踏实地的感觉,感觉双脚根植于大地,同时和你的呼吸连接,通过呼吸关注你的身体,保持舒
割裂的行情周三一根大阴线,上百亿资金流出,任何人看到都会心惊胆战,各种大v提示控制仓位,可能下杀开始,结果周四流入了上百亿资金,硬是拉出来了一根大阳线,控盘能力实在是高超!周四赚钱效应并不好
通过绘制心灵地图知我心今天我要分享的话题是通过绘制心灵地图知我心。知我心就是我懂我自己,怎么能懂自己这样的一个话题,其实是一件特别重要的事情。当一个人,只要他清晰了自己内心到底想要的是什么?清晰了自己内
如何看待孩子的学习(上)学习很重要。每一个家长包括孩子自己也都能够意识到我们现在生存的技能已经不是简单的一些体力劳动,大多都是比较复杂而且都有一些智力因素。比如现在最基本的沟通,你如果没有文字的知识,没有
聊一聊写作这件事文张红荣原创作品有的人可能一提到写作就怵头。下面我就来说说写作的事。人本俱足。这句话来自佛教。人的内部都有生命的力量,每个人都有成为未来自己的那个潜质和潜能。从心理学角度来说,人本
简评中国女排教练组在这次世联赛上的表现和疑惑世联赛第15轮循环赛已于6月20日结束。昨天下午北京时间18点,中国女排以25102520和2517连下3局,完胜了排名第一的美国队,取得了循环赛7连胜,最终以10胜5负积30分排
中国女排30轻松击败荷兰女排,赢得了世联赛第5场胜利昨天晚上22点,中国女排朱婷李盈莹袁心玥颜妮龚翔宇丁霞王梦洁组成首发阵容,与世界劲旅荷兰女排展开了对决,以25122519和3331赢得了比赛。这是世联赛开始以来,中国女排首次全主
假公济私的日本做事太荒唐可笑俗话说人算不如天算。为了举办2020年奥运会,从不吃亏的日本从争取到筹办废了不少的心思,投入了大量的资金和人力物力,本想利用这次举办奥运会的机会大捞一笔,没想到老天偏偏不给他机会,
顽强拼搏,永不服输,中国女排主力二传丁霞丁霞,31岁,身高1。80米,籍贯河北省石家庄,中国女排主力二传。扣球高度3。02米,拦网高度2。92米,是一位集二传与进攻于一体的双料运动员。先后获得CCTV体坛风云人物最佳团队
简单评价一下中国女排主力阵营在赛场上的不同表现自6月12日以来,中国女排的几大主力已全部投入到世联赛的比赛中,虽然连续获得了两场胜利,但是也暴露出了一些问题,给人初步感觉是强的更强了,弱的更弱了,实力上出现了一些参差不齐的状况
李盈莹的进步就是中国女排未来的成功提起李盈莹大家都不陌生,她年仅21岁,是中国女排最年轻和最有发展前途的主力运动员,倍受广大球迷的青睐。被人们称之为火枪手秘密武器。一些媒体还把她和朱婷张常宁并称为中国女排的三驾马车
中国女排主力二传丁霞用头挽救了一个死球,为国争光6月18日晚上,中国女排和俄罗斯女排展开了激烈的比赛,两支球队的特点是个头都比较高大,都具有较好的网前拦防能力和进攻能力,加上互相之间以往有过多次交手,双方的情况都比较了解,实力也
世联赛中国VS意大利观后感及中国女排的前途展望6月14日22点,中国女排的第12轮比赛又开始了,对手是东道主意大利女排。中国队队长第一主攻手朱婷并没有上场,而是由李盈莹张常宁袁心玥颜妮龚翔宇丁霞林莉首发出场意大利队主力队员也没
国之娇子,世界骄傲,国际女排超级巨星朱婷朱婷,27岁,身高1。98米,籍贯河南周口,毕业于河南省体校,现任中国女排第一主攻手队长。是中国女排的顶梁柱。众所周知,郎平是她排球生涯中的伯乐和恩师,让她有机会从河南省女排二队进
朱婷担任东京奥运会中国体育代表团旗手,理所当然,当之无愧夺冠2021国际巨星中国女排队长朱婷当选为东京奥运会中国代表团旗手,可谓众望所归,当之无愧。这是中国奥运会历史上第一位女旗手,更是中国女排的第一位女旗手,是中国女排的骄傲,是广大排
为中国体育代表团夺得东京奥运会首枚金牌的人杨倩杨倩,21岁,浙江鄞州姜山人。12岁被选入宁波体校射击队,13岁获得全国青少年锦标赛亚军14岁获得省运会3块金牌,并创造了女子气步枪40发399环的世界级成绩15岁获得第一届全国青