震惊!为了欣赏后宫的3000佳丽,我竟然用Python做出了一面墙?_python画城墙

def gen_text_img(text, font_size, font_path=None):
‘’’
输入:
text:照片墙的样式文字
font_size:字体的大小
font_path:字体
返回:
文字图像
‘’’
font = ImageFont.truetype(font_path, font_size)
(width, length) = font.getsize(text)
text_img = Image.new(‘RGBA’, (width, length))
draw = ImageDraw.Draw(text_img)
# 从左上角开始绘制
draw.text((0, 0), text, fill=(0, 0, 0), font=font)
return text_img


### 设置透明度


接下来我们设置一下透明度,设置透明度的目的就是为了让文字周边区域的图片变的透明化,看起来更美观一些。



def trans_alpha(img, pixel):
‘’’
R:红
G:绿
B:蓝
A:透明
‘’’
_, _, _, alpha = img.split()
alpha = alpha.point(lambda i: pixel[-1] * 10)
img.putalpha(alpha)
return img


### 图片替换


下一步就要进行核心操作——图片替换了,这一步的主要目的就在于用我们手中的图片来替换设置字符背景墙时的空白区域。



def picture_wall_mask(text_img, edge_len, pic_dir):
‘’’
输入:
text_img:文字图像
edge_len:照片边长(用于扩大像素)
pic_dir:路径
‘’’
# 像素扩大
new_img = Image.new(
‘RGBA’, (text_img.size[0] * edge_len, text_img.size[1] * edge_len))
file_list = os.listdir(pic_dir)
img_index = 0
for x in range(0, text_img.size[0]):
for y in range(0, text_img.size[1]):
pixel = text_img.getpixel((x, y))
file_name = file_list[img_index % len(file_list)]
try:
# 导入图片
img = Image.open(os.path.join(pic_dir, file_name)).convert(
‘RGBA’)
img = img.resize((edge_len, edge_len))
img = trans_alpha(img, pixel)
# 进行替换
new_img.paste(img,
(x * edge_len, y * edge_len))
img_index += 1
except Exception as e:
print(f"文件打开失败:{file_name} + {e}")
return new_img


### 主函数


最后我们把上面准备的各种功能进行组合,就可以做出照片墙了。



def main(text=‘’,
font_size=20,
edge_len=60,
pic_dir=“./微信头”,
out_dir=“./out”,
font_path=‘buzz_cloud_font.ttf’):
‘’’
生成照片墙
:param text: 照片墙字符样式
:param font_size: 字体大小
:param edge_len: sub picture’s egde length
‘’’
if len(text) >= 1:
text_ = ’ '.join(text)
print(f"generate text wall for ‘{text_}’ with picture path:{pic_dir}")
text_img = gen_text_img(text_, font_size, font_path)
img_ascii = picture_wall_mask(text_img, edge_len, pic_dir)
img_ascii.save(out_dir + os.path.sep + ‘’.join(text) + ‘.png’)



main(text=‘CA’)


#### 大功告成


此处致敬所有新认识的朋友!Salute!

文末有福利领取哦~
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

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

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。![img](https://img-blog.csdnimg.cn/c67c0f87cf9343879a1278dfb067f802.png)

👉**二、Python必备开发工具**

![img](https://img-blog.csdnimg.cn/757ca3f717df4825b7d90a11cad93bc7.png)  
👉**三、Python视频合集**

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。  
![img](https://img-blog.csdnimg.cn/31066dd7f1d245159f21623d9efafa68.png)

👉 **四、实战案例**

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。**(文末领读者福利)**  
![img](https://img-blog.csdnimg.cn/e78afb3dcb8e4da3bae5b6ffb9c07ec7.png)

👉**五、Python练习题**

检查学习结果。  
![img](https://img-blog.csdnimg.cn/280da06969e54cf180f4904270636b8e.png)

👉**六、面试资料**

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。  
![img](https://img-blog.csdnimg.cn/a9d7c35e6919437a988883d84dcc5e58.png)

![img](https://img-blog.csdnimg.cn/5db8141418d544d3a8e9da4805b1a3f9.png)

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里无偿获取](https://bbs.csdn.net/topics/618317507)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值