转自实验楼:https://www.shiyanlou.com/courses/370/learning/?id=1191

代码:

# -*- coding:utf-8 -*-
from PIL import Image
import argparse #创建ArgumentParser实例
parser = argparse.ArgumentParser() #定义输入文件、输出文件、输出字符画的宽和高
parser.add_argument('file') #必选参数1
parser.add_argument('-o','--output') #可选参数2
parser.add_argument('--width',type=int,default=80) #可选参数3
parser.add_argument('--height',type=int,default=80) #可选参数4 #解析并获取参数
args = parser.parse_args() #输入的图片文件路径
IMG= args.file #输入字符画的宽度
WIDTH = args.width #输入字符画的高度
HEIGHT = args.height #输出字符画的路径
OUTPUT = args.output #首先将RGB值转为灰度值,然后使用灰度值映射到字符列表中的某个字符
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ") def get_char(r,g,b,alpha=256):
#判断alpha值
if alpha == 0:
return ' '
#获取字符集的长度
length = len(ascii_char) #将RGB值转为gray,灰度值范围为0-255
gray = int(0.2126*r + 0.7152*g + 0.0722*b) #灰度值范围为0-255,而字符集只有70
#需要进行如下处理才能将灰度值映射到制定的字符上
uint = (256.0 + 1)/length #返回灰度值对应的字符
return ascii_char[int(gray/uint)] if __name__ == '__main__':
#打开并调整图片的宽和高
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) #字符画输出到文件
if OUTPUT:
with open(OUTPUT,'w') as f:
f.write(txt)
else:
with open("output.txt",'w') as f:
f.write(txt)

运行结果:

20个python项目--图片转字符画的更多相关文章

  1. Python 【图片转字符画】

    一.安装的第三方模块 $ sudo pip3 install --upgrade pip $ sudo pip3 install pillow //window pip3 install pillow ...

  2. 通过python将图片生成字符画

    基础知识: 1.python基础知识   快速学习链接:https://www.shiyanlou.com/courses/214 2.linux命令行操作   快速学习链接:https://www. ...

  3. Python实现图片转字符画

    from PIL import Image def get_char(r, g, b, alpha=256): ascii_char = '''$@B%8&WM#*oahkbdpqwmZO0Q ...

  4. Python 图片转字符画

    Python 图片转字符画 一.课程介绍 1. 课程来源 原创 2. 内容简介 本课程讲述怎样使用 Python 将图片转为字符画 3. 前置课程 Python编程语言 Linux 基础入门(新版) ...

  5. [笔记] Python 图片转字符画

    一.介绍 用Python 代码完成图片转字符画 二.python 环境 Python 3.6.6 pillow 5.1.0  Python 图像处理库, 需要另外安装 三.原理 gray = 0.21 ...

  6. Python 图片转字符画 学习笔记

    Python 图片转字符画 学习笔记 标签(空格分隔): Python 声明:此文章和所有代码是学习笔记,非原创,原文教程地址:https://www.shiyanlou.com/courses/37 ...

  7. python小项目(-)图片转字符画

    # -*- coding: utf-8 -*- from PIL import Image codeLib = '''@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrj ...

  8. python学习---50行代码实现图片转字符画1

    转自:https://blog.csdn.net/mm1030533738/article/details/78447714 项目链接: https://www.shiyanlou.com/cours ...

  9. python学习---50行代码实现图片转字符画2

    from PIL import Image codeLib = '''@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<> ...

随机推荐

  1. ln: /usr/bin/mysql: Operation not permitted

    一.背景 前段时间装mysql,就遇到了ln: /usr/bin/mysql: Operation not permitted的错误,网上好多方法都过时了,下边是我的解决方法 执行 sudo ln - ...

  2. 京东POP店铺使用京东物流切仓操作方法

    首先进入京东物流工作台:https://wl.jdwl.com/ 在运营管理中,点击店铺商品 然后看截图操作

  3. 【C#-读取XML文件】XMLReader读取XML文档

    使用   XmlReader.Create("文件路径")   加载xml文件 XmlReader使用流的方式来读取. //使用XMLReader读取XML数据 XmlReader ...

  4. shell练习--PAT试题1010:一元多项式求导 (25 分)(失败案例喜加一)

    ---恢复内容开始--- 1010 一元多项式求导 (25 分) 设计函数求一元多项式的导数.(注:x​n​​(n为整数)的一阶导数为nx​n−1​​.) 输入格式: 以指数递降方式输入多项式非零项系 ...

  5. 2018 计蒜之道-初赛 第一场 A-百度无人车

    百度一共制造了 nn 辆无人车,其中第 ii 辆车的重量为 a_i\ \mathrm{kg}ai​ kg. 由于车辆过重会增大轮胎的磨损程度,现在要给这 nn 辆车减轻重量.每将一辆车减轻 1\ \m ...

  6. 利用pdfbox和poi抽取pdf、doc以及docx格式的内容

    使用pdfbox1.5.0抽取pdf格式文档内容,使用poi3.7抽取doc及docx文档内容: /** * Created by yan.shi on 2017/9/25. */ import or ...

  7. Java 工程师成神之路

    基础篇 → 什么是面向对象 面向对象.面向过程 是一种新兴的程序设计方法,或者是一种新的程序设计规范(paradigm),其基本思想是使用对象.类.继承.封装.多态等基本概念来进行程序设计.从现实世界 ...

  8. CodeForces–471D--MUH and Cube Walls(KMP)

    Time limit         2000 ms  Memory limit  262144 kB Polar bears Menshykov and Uslada from the zoo of ...

  9. Kaggle 网站上的练习

    快速的数据科学教程: https://www.kaggle.com/learn/overview

  10. ES6迭代器和生成器

    一.迭代器 JavaScript 原有的表示"集合"的数据结构,主要是数组(Array)和对象(Object),ES6 又添加了Map和Set.这样就需要一种统一的接口机制,来处理 ...