转自实验楼: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. keep-alive实现返回保留筛选条件及筛选结果

    实现页面返回时,保留筛选条件和筛选结果 说明 . keep-alive 是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM 实现 结合router实现部分页面缓存 模板应用 ...

  2. 快速排序java代码

    法一: //快速排序 通过测试 public class QuickSortTest2 { public static void quickSort(int[] data,int low,int hi ...

  3. 【leetcode】Department Top Three Salaries

    The Employee table holds all employees. Every employee has an Id, and there is also a column for the ...

  4. 1、布局容器Grid、StackPanel、GroupBox、DockPanel、WrapPanel

    Grid——网格布局,其中控件或容器需指定位置 StackPanel——堆叠面板,其中的控件水平布局.竖直布局 DockPanel——停靠面板,内部控件或容器可以放置在上.下.左.右 WrapPane ...

  5. maven项目创建5 service层整合

    创建service相关文件 创建applicationContext-service.xml文件 <?xml version="1.0" encoding="UTF ...

  6. 手动升级 Confluence - 规划你的升级

    1. 确定你的升级路径 使用下面的表格来确定最佳的升级路径来让你的Confluence 从当前版本升级到最新的 Confluence 版本. 你的版本 推荐升级到 Confluence 的升级路径 2 ...

  7. jQuery_完成表单注册检验

    在校验表单的时候会很麻烦,但是jq可以用很简单的方法来检验,即使用validate. 原表单: 代码 <!DOCTYPE html> <html> <head> & ...

  8. [BZOJ5249][九省联考2018]IIIDX:线段树+贪心

    分析 GXZlegend orz 构造出一组合法的解并不是难事,但是我们需要输出的是字典序最大的解. 字典序最大有另一种理解方式,就是让越小的数尽量越靠后. 我们从树的根结点出发,从1开始填数,构造出 ...

  9. centos文件实时同步inotify+rsync

    我的应用场景是重要文件备份 端口:873,备份端打开即可 下载地址:https://rsync.samba.org/ftp/rsync/src/ 服务端和客户端要保持版本一致 网盘链接:https:/ ...

  10. JS利用XMLHttpRequest拦截ajax请求

    function XMLHttpRequestBreak(fun=()=>false){ let f = XMLHttpRequest.prototype.open; let add = fun ...