1024节快乐!

今天朋友圈出现了好多类似这样的代码和图片,我也蹭一波热度,祝各位同行节日快乐,早日过上你想要的生活!


1024节快乐!_第1张图片
image.png

我的方式比较取巧,首先得自己生成一张对比度比较高的图片,如下:

1024节快乐!_第2张图片
1024.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()

顺着这个逻辑再想一想,其实还有很多有趣的点子:

  1. 除了1024,这个图片可以是任何内容,一个爱心?名字?玫瑰?
  2. 能不能做出阴影效果?
  3. 能不能自己生成这个数组?比如说生成一个二维数组,只包含0和1,如果把这个数组打印出来,所有是1的地方能连成一个图案。字符图像编码了解一下。

你可能感兴趣的:(1024节快乐!)