[Python] 纯文本查看 复制代码# -*- coding:utf-8 -*-

from PIL import Image, ImageFont, ImageDraw

from tkinter import filedialog, Tk

def open_path():

# 图片路径

root = Tk()

root.withdraw()

file_path = (filedialog.askopenfilename(title='选择图片文件', filetypes=[('All Files', '*')]))

return file_path

print('请选择图片:')

IMG = open_path() # 文件路径

ascii_char = list("ABCDE") # 所用字符列表

print('正在转换......')

# 将256灰度映射到70个字符上

def get_char(r, g, b, alpha=256): # alpha透明度

if alpha == 0:

return ' '

length = len(ascii_char)

gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b) # 计算灰度

unit = (256.0 + 1) / length

return ascii_char[int(gray / unit)] # 不同的灰度对应着不同的字符

def save_path():

# 图片路径

root = Tk()

root.withdraw()

file_path = (filedialog.asksaveasfilename(title='选择图片文件', filetypes=[('All Files', '*')]))

return file_path

# 通过灰度来区分色块

# 该部分以下和灰度值字符画区别所在

if __name__ == '__main__':

im = Image.open(IMG)

WIDTH = int(im.width / 6) # 高度比例为原图的1/6较好,由于字体宽度

HEIGHT = int(im.height / 15) # 高度比例为原图的1/15较好,由于字体高度

im_txt = Image.new("RGB", (im.width, im.height), (255, 255, 255))

im = im.resize((WIDTH, HEIGHT), Image.NEAREST)

txt = ""

colors = []

for i in range(HEIGHT):

for j in range(WIDTH):

pixel = im.getpixel((j, i))

colors.append((pixel[0], pixel[1], pixel[2])) # 记录像素颜色信息

if (len(pixel) == 4):

txt += get_char(pixel[0], pixel[1], pixel[2], pixel[3])

else:

txt += get_char(pixel[0], pixel[1], pixel[2])

txt += '\n'

colors.append((255, 255, 255))

dr = ImageDraw.Draw(im_txt)

font = ImageFont.load_default().font # 获取字体

x = y = 0

# 获取字体的宽高

font_w, font_h = font.getsize(txt[1])

font_h *= 1.37 # 调整后更佳

# ImageDraw为每个ascii码进行上色

for i in range(len(txt)):

if (txt[i] == '\n'):

x += font_h

y = -font_w

dr.text([y, x], txt[i], colors[i])

y += font_w

# 输出

print('转换成功!')

print('请选择保存路径:')

save_path = save_path()+'.png'

im_txt.save(save_path)

print('保存成功')

im = Image.open(save_path)

im.show()

python动态图片转字符画_【小工具】使用python将图片转彩色字符画相关推荐

  1. python绘制直方图根据不同分类_小猿圈Python开发之绘制频率分布直方图示例

    现在人工智能越来越实用,甚至深入到千家万户,随之而来的就是python技术的火爆,今天小猿圈python讲师为你讲解一下绘制频率分布直方图示例,希望对于刚刚自学python的你有一定的帮助. 项目中在 ...

  2. JS_小工具_自己写了一个画像素画的小工具

    自己抽空做了一个画像素画的小工具,界面比较简单,但也可以画着玩.呵呵. 有意思的地方在于可以把画的内容保存为一个数组,可以很方便地还原成图案... 主要的JS代码: //画板表格 var iconTa ...

  3. Java实现动态加载页面_[Java教程]动态加载页面数据的小工具 javascript + jQuery (持续更新)...

    [Java教程]动态加载页面数据的小工具 javascript + jQuery (持续更新) 0 2014-05-07 18:00:06 使用该控件,可以根据url,参数,加载html记录模板(包含 ...

  4. python做测试小工具_自制快速冒烟测试小工具--基于python多线程(2)

    原标题:自制快速冒烟测试小工具--基于python多线程(2) 新书 速递 文 |愈知愈无知 快速冒烟测试小工具-(1)分析及准备 三.代码实现-封装 1. 创建包和文件夹目录 Config:存放配置 ...

  5. python 编写实用小工具-toy: python平时积累的笔记以及编写的小工具

    所有人都告诉你怎么活,只有自己没有搞清楚该如何活.相信自己,我们每个人都是主角?? toy Python ?? 献给我亲爱的女朋友--如 ? 介绍 学习 python.matlab 时积累的笔记以及编 ...

  6. C#:一个拖拽网页图片到本地存储的小工具

    当年上学时候写的一个很简单的东西,拖动图片到程序中自动重命名保存到指定位置, 原图文地址:http://user.qzone.qq.com/652768664/blog/1363151915 usin ...

  7. WeChat之小工具:基于C++程序代码设计的查看微信撤销、撤回消息(包括文本、图片、视频等)GUI小工具

    WeChat之小工具:基于C++程序代码设计的查看微信撤销.撤回消息(包括文本.图片.视频等)GUI小工具 导读      哈哈,千万不要给程序猿随便发信息,程序猿认真起来,别说你发的微信信息,就连你 ...

  8. 使用python制作读取示波器波形的GUI小工具

    使用python制作读取示波器波形的GUI小工具 1.使用python创建GUI界面,该界面可以读取CSV数据格式的示波器波形并绘制在GUI界面上 2.可以zoom缩放操作 3.源码见链接 https ...

  9. python分数计算器_python算法——方程计算器小工具

    python算法--方程计算器小工具 工具介绍 方程计算器小工具使用python开发,可实现三元以内一次.二次等方程的计算,包含基本计算器的功能.可用于老师.学生.家长等快速验证方程的求解,检查学生作 ...

  10. js小工具-给多行文本框添加字符统计

    1.简介 在网页开发中,多行文本框是一个比较常见的东西,标签名为textarea,熟悉textarea的朋友应该知道,textarea有一个maxlength属性,可以限制文本框的输入字符数.在开发的 ...

最新文章

  1. Create, Save, and Open Trace Documents
  2. RS232接口是如何工作的?
  3. linux 音频路径,Linux系统中提取DVD音频的方法介绍(转)
  4. 工控系统的指纹识别技术
  5. 导出到Excel的操作
  6. Longest Substring with At Most Two Distinct
  7. (八)React原理
  8. 建立带头结点的双向链表_尾插法
  9. 服务器修改地址,服务器修改管理地址
  10. 关于vue-template-compiler 源码探究的资料
  11. 1000道Python题库系列分享
  12. C程序中如何区分windowsx86,x64
  13. oracle+纵向存储,oracle横向纵向求和代码实例
  14. koa ajax,nodejs之koa2请求示例(GET,POST)
  15. 中国网站备案制度——祸国殃民
  16. 转载的关于pthread_cond_wait的文章,写的比较详细
  17. 图片导入ppt后模糊_PPT另存为图片不清晰|为什么PPT导出图片不清晰
  18. /usr/bin/ssh-copy-id: ERROR: ssh: Could not resolve hostname 192.168.0.114:root/.ssh/authorized_keys
  19. python爬取公众号文章数据库,爬取微信公众号所有文章的请教
  20. 网络安全原理与实践学习笔记——设计DMZ

热门文章

  1. centos7 yum 安装mariadb
  2. 在线绘图(PS)(海报)
  3. (初学者)初学者的编程的苦恼
  4. 深入Java虚拟机-第二章-Java内存区域-学习笔记
  5. 一个项目的简单开发流程——需求、数据库、编码
  6. 三极晶体管放大电路实验
  7. WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[上篇](转)...
  8. 关于Jbulder2006的问题
  9. ubuntu下jmxtrans 安装
  10. ELK+logstash配置日志报警