如何用Python将图片转为字符画
作者:GSGundam 发布时间:2022-06-15 09:26:06
标签:Python,字符画
今天打算玩个好玩的,也是基于一个优秀的图像处理库——PIL,使用ascii字符把图片转为黑白字符画。
首先有个问题,就是模拟灰度,这里有个公式:
1 | Gray = 0.2126 × R + 0.7152 × G + 0.0722 × B |
这样就好办了。当然,RGB模式下,256x256x256的颜色范围虽然被转换成了256的灰度范围,字符还是不好一一对应。我们可以使用一个字符对应多个灰度的方式来解决。
记得要先安装PIL库,其中:
如果是Python 2,运行 pip install PIL
。
如果是Python 3,运行 pip install pillow
。
接下来直接上代码吧:
from PIL import Image
#设置显示的字符集
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
WIDTH = 130
HEIGHT = 50
def get_char(r,g,b,alpha = 256):
if alpha == 0:
return ' '
length = len(ascii_char)
gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
unit = (255.0 + 1)/length
return ascii_char[int(gray/unit)]
if __name__ == '__main__':
img = "E:/WindowsDocuments/G7/Desktop/1.png"
im = Image.open(img)
im = im.resize((WIDTH,HEIGHT), Image.NEAREST)
txt = ""
for i in range(HEIGHT):
for j in range(WIDTH):
txt += get_char(*im.getpixel((j,i)))
txt += '\n'
print(txt)
如果想要输出到文件,可以在定义的部分,加上想要保存的文件名 OUTPUT = 'output.txt'
,然后在最后写进去:
with open(OUTPUT, 'w') as f:
f.write(txt)
最后,我们得到了这个:
来源:https://www.gsgundam.com/archive/2022-07-10-how-to-draw-image-ascii-python-pil/
0
投稿
猜你喜欢
- 在 Python 的项目中,如何管理所用的全部依赖库呢?最主流的做法是维护一份“requirements.txt”,记录下依赖库的名字及其版
- 本文实例讲述了python中偏函数partial用法。分享给大家供大家参考。具体如下:函数在执行时,要带上所有必要的参数进行调用。但是,有时
- 一、待搜索图二、测试集三、new_similarity_compare.py# -*- encoding=utf-8 -*-from ima
- 方法一在 Pillow 中,resize() 方法会强制将图片缩放到指定的大小,可能会导致图片变形或失真;而 thumbnail() 方法则
- 1.file--->settings:2.搜索temlates,点击File and Code Templates,点击右侧的Pyth
- 说检查点,其实就是对过去历史的记录,可以认为是log.不过这里进行了简化.举例来说,我现在又一段文本.文本里放有一堆堆的链接地址.我现在的任
- 以下是通过Excel 的VBA连接Oracle并操作Oracle相关数据的示例Excel 通过VBA连接数据库需要安装相应的Oracle客户
- 在读文件时常常得到一些\n和引号之类的符号,可以使用字符串的成员函数strip()来去除。1.去除首尾不需要的字符a= '"
- 自动签到的python脚本源码新建一个python文件,checkin.py,保存到电脑上某个位置,我这里保存到的是E:\pyproject
- 首先我们供给一台主机要进行的步骤就是对其主机端口的扫描,查看其中开放的端口。我们首先创建一个TCP的全连接的扫描器。我们使用socket来创
- 将数据写入Excel文件中,用python实现起来非常的简单,下面一步步地教大家。一、导入excel表格文件处理函数import xlwt注
- 先说下自己的环境,redis是部署在centos上的,爬虫运行在windows上,1. 安装redisyum install -y redi
- 前言文章抄袭在互联网中普遍存在,很多博主都收受其烦。近几年随着互联网的发展,抄袭等不道德行为在互联网上愈演愈烈,甚至复制、黏贴后发布标原创屡
- 代码如下:Create PROCEDURE Batch_Delete @TableName nvarchar(100), --表
- 前言深度神经网络是一种目前被广泛使用的工具,可以用于图像识别、分类,物体检测,机器翻译等等。深度学习(DeepLearning)是一种学习神
- 一、低配logging日志总共分为以下五个级别,这个五个级别自下而上进行匹配 debug-->info-->warning--&
- 1.sort()首先看sort()方法,sort方法只能对列表进行操作,而sorted可用于所有的可迭代对象。a = [1, 5, 3, 4
- Python模块,简单说就是一个.py文件,其中可以包含我们需要的任意Python代码。迄今为止,我们所编写的所有程序都包含在单独的.py文
- 直接使用model2=model1会出现当更新model2时,model1的权重也会更新,这和自己的初始目的不同。经评论指出可以使用:mod
- 注意:安装opencv之前需要先安装numpy,matplotlib等一、安装方法方法一、在线安装1.先安装opencv-pythonpip