怎么用python写一个福字(python,开发技术)

时间:2024-05-05 09:20:19 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

前言:

支付宝 2022 集五福活动正式开启

数据显示,过去六年累计参与支付宝集五福的人数已经超过了 7 亿,每 2 个中国人里就有 1 个曾扫福、集福、送福。

一,扫五福活动如此火爆,为何不自己利用编程来生成福字!

首先作品奉上:

怎么用python写一个福字

①,导入python库

importiofromPILimportImageimportrequests

②,利用爬虫,获取单个汉字

defget_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.sizeifquality=='M':w,h=int(w*0.75),int(0.75*h)elifquality=='L':w,h=int(w*0.5),int(0.5*h)returnim.resize((w,h))

def get_word 的作用为爬取我们需要的汉字模型。
如图:

怎么用python写一个福字

③,爬取背景底图

defget_bg(quality):returnget_word('bg',quality)

④,图片格式大小,配置函数

defwrite_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)foritemintext.split()]rows=len(text_list)cols=max([len(item)foritemintext_list])ifHorV=='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')forrowinrange(rows):ifHorV=='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)forcol,chinenumerate(text_list[row]):ifHorV=='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)ifout_file:out_im.convert('RGB').save(out_file)out_im.show()

⑤,成品展示

怎么用python写一个福字

二,完整代码

完整代码奉上,需要先安装需要的python库。

importiofromPILimportImageimportrequestsdefget_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.sizeifquality=='M':w,h=int(w*0.75),int(0.75*h)elifquality=='L':w,h=int(w*0.5),int(0.5*h)returnim.resize((w,h))defget_bg(quality):returnget_word('bg',quality)defwrite_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)foritemintext.split()]rows=len(text_list)cols=max([len(item)foritemintext_list])ifHorV=='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')forrowinrange(rows):ifHorV=='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)forcol,chinenumerate(text_list[row]):ifHorV=='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)ifout_file:out_im.convert('RGB').save(out_file)out_im.show()text='福'write_couplets(text,HorV='V',quality='M',out_file='福.jpg')
 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:怎么用python写一个福字的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Java和JVM的重载和重写方法是什么下一篇:

5 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18