首页 > 编程语言 >用Python将图片转为字符画

用Python将图片转为字符画

时间:2022-12-12 11:36:10浏览次数:73  
标签:__ 字符 PIL Python ascii char im txt 转为

今天打算玩个好玩的,也是基于一个优秀的图像处理库——PIL,使用ascii字符把图片转为黑白字符画。


首先有个问题,就是模拟灰度,这里有个公式:

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)

最后,我们得到了这个:

用Python将图片转为字符画_Image

[2022年07月10日原始发布于本作者博客]


​查看原文​

标签:__,字符,PIL,Python,ascii,char,im,txt,转为
From: https://blog.51cto.com/u_3568871/5929284

相关文章

  • 详解Python 3.8的海象算子:大幅提高程序执行效率
    ​作者:AnimeshGaitonde机器之心编译参与:Panda前几个月发布的Python3.8包含了一项重要的新功能,即海象算子。如果合理运用,该算子能有效地提升Python程序的执行效率。本......
  • CodeUtil【随机字符串工具类】
    packagecom.Lucky.Util;importjava.util.ArrayList;importjava.util.Random;/***自定义的随机字符串工具类*/publicclassCodeUtil{//方法pub......
  • python for-else break continue应用
    ##for临时变量in序列:##重复执行的代码##......##else:##循环正常结束后要执行的代码#所谓else指的是循环正常结束后要执行的代码,即如果是bresk终止......
  • Python 基于xml.etree.ElementTree实现XML对比
    测试环境Python3.6Win10代码实现#!/usr/bin/envpython3.4.0#-*-encoding:utf-8-*-__author__='shouke'importxml.etree.ElementTreeasETdefcompare_......
  • 一个特殊字符导致的问题
    话说有天,本人接到领导要求,要在某台服务器执行巡检命令,命令是“sh。。。。。”。copy下来命令,运行,结果报错,提示”-bash:sh:commandnotfound“。/bin有sh文件,而且path里......
  • python高性能异步爬虫
    目的:在爬虫中使用异步实现高性能的数据爬取操作。异步爬虫的方式:1、多线程,多进程(不建议):好处:可以为相关阻塞的操作单独开启线程,阻塞操作就可以异步执行。弊端:无法无限制的开......
  • python服务端与android客户端基于TCP协议的简单通信
    点击连接服务器后接收传来的数据,改变Textview的文字内容在服务器端建立一个py文件server.pyimportsockethost='10.0.1.15''''上边这里填服务器的内网地址我也不知......
  • 使用Python解析Windows系统日志
    目标要求:对Windows系统日志进行处理,并生成统计文件1.如何找到Windows系统日志?通常情况下,我们都是在Windows系统自带的事件查看器查看系统日志(使用win+x可以快速......
  • python 字符串的格式化
    什么是格式化定义:一个固定的字符串中有部分元素是根据变量的值而改变的字符串今天是xx,星期xx,大家好date='2022.1211'day='--' 根据类型定义的格式化'myname......
  • 字符串
    #include<stdio.h>intmain(intargc,charconst*argv[]){intch;while((ch=getchar())!=EOF){//ctrl+z就是EOLputchar(ch);}printf(......