今天朋友圈出现了好多类似这样的代码和图片,我也蹭一波热度,祝各位同行节日快乐,早日过上你想要的生活!
![](https://img.haomeiwen.com/i69520/c7410a40158a0f4c.png)
我的方式比较取巧,首先得自己生成一张对比度比较高的图片,如下:
![](https://img.haomeiwen.com/i69520/284e7664d56d6790.png)
代码逻辑其实很简单,还记得当初是怎么处理验证码的吗?二值化。
用PIL打开图像,轮询像素点,所有非白色的都当成这1,白色也为空。这样就可以把图片处理成一个数组了,之后1的内容可以用随机值填充,最后把数组打印出来即可。代码如下:
from PIL import Image
import random
charactors = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
img = Image.open('1024.png')
img = img.resize((img.width//3, img.height//3))
width, height = img.width, img.height
for x in range(height):
for y in range(width):
r, g, b, _ = img.getpixel((y, x))
pix = ' ' if r or g or b else random.choice(charactors)
print(pix, end='')
print()
顺着这个逻辑再想一想,其实还有很多有趣的点子:
- 除了1024,这个图片可以是任何内容,一个爱心?名字?玫瑰?
- 能不能做出阴影效果?
- 能不能自己生成这个数组?比如说生成一个二维数组,只包含0和1,如果把这个数组打印出来,所有是1的地方能连成一个图案。字符图像编码了解一下。
网友评论