经常会看到,每个公司的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. 原图,来自网络然后截图截了一下,毕竟要写成代码尺寸也不能太大。
2. 设置了阈值之后的灰度图,这边的阈值设置为200,是作者不断微调的结果。
3. 重新设置了尺寸,毕竟跟原图尺寸不一样,进行了压缩,所以肯定会比较糊,甚至马赛克。近视的朋友建议放大后脱下眼睛直接看。,没放大的话感觉看不清楚。
4. 输出在console的效果,这边只能用截图了。
5. 对比图