Python用*生成图案

问题

        经常会看到,每个公司的cmd里面或者代码里都有‘*’或者‘#’生成的这样的那样的标记。但是如果自己一个个拼的话倒是麻烦的很。程序员还是要用程序员的方法来处理处理。由于Python提供了很多方便的库,所以就尝试着使用Python处理下。

代码

代码过程很简单,这边没有加上去背景的操作。直接就是用灰度图二值化的方式。

所谓的二值化,就是将一张图片分成0和1,也就是黑点和白点,这时候使用RGBA通道的话,难以分辨出哪些需要设置为0,哪些需要设置为1,而灰度图的话就很好地匹配上。

#coding=utf-8
#引入各种包
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np


# 打开图片  
image = Image.open("head.png")

# 将图片转换成黑白模式  
image = image.convert("L")

#看看图片具体的宽高
print(image.width, image.height)

#这边自己调整threashold看看怎么样才能得到一个比较好的效果
threshold = 200
for x in range(image.width):
    for y in range(image.height):
        if image.getpixel((x, y)) > threshold :
            image.putpixel((x, y), 255)
        else:
            image.putpixel((x, y), 0)
#把灰度图像画出来
plt.imshow(image,cmap='gray')
image.save("gray.jpg")

#由于要输出成*,行间距和列间距是不一样的,这边具体resize到什么大小得自己调一下
image = image.resize((100, 30))
data = np.array(image)
rows, cols = data.shape
for i in range(rows):
    for j in range(cols):
        if data[i,j] > 0:
            print(' ', end='')
        else:
            print('*', end='')
    #换行
    print()

#画一下重新设置尺寸的图片
plt.figure("pimon")
plt.imshow(image,cmap='gray')
plt.axis('off')
plt.show()
        # 保存图片
image.save("resize.jpg")

效果

1. 原图,来自网络然后截图截了一下,毕竟要写成代码尺寸也不能太大。

Python用*生成图案_第1张图片

 2. 设置了阈值之后的灰度图,这边的阈值设置为200,是作者不断微调的结果。

Python用*生成图案_第2张图片

3. 重新设置了尺寸,毕竟跟原图尺寸不一样,进行了压缩,所以肯定会比较糊,甚至马赛克。近视的朋友建议放大后脱下眼睛直接看。,没放大的话感觉看不清楚。

4. 输出在console的效果,这边只能用截图了。

Python用*生成图案_第3张图片

5. 对比图 

 Python用*生成图案_第4张图片

你可能感兴趣的:(python,开发语言)