python动态图片转字符画_【小工具】使用python将图片转彩色字符画
[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将图片转彩色字符画相关推荐
- python绘制直方图根据不同分类_小猿圈Python开发之绘制频率分布直方图示例
现在人工智能越来越实用,甚至深入到千家万户,随之而来的就是python技术的火爆,今天小猿圈python讲师为你讲解一下绘制频率分布直方图示例,希望对于刚刚自学python的你有一定的帮助. 项目中在 ...
- JS_小工具_自己写了一个画像素画的小工具
自己抽空做了一个画像素画的小工具,界面比较简单,但也可以画着玩.呵呵. 有意思的地方在于可以把画的内容保存为一个数组,可以很方便地还原成图案... 主要的JS代码: //画板表格 var iconTa ...
- Java实现动态加载页面_[Java教程]动态加载页面数据的小工具 javascript + jQuery (持续更新)...
[Java教程]动态加载页面数据的小工具 javascript + jQuery (持续更新) 0 2014-05-07 18:00:06 使用该控件,可以根据url,参数,加载html记录模板(包含 ...
- python做测试小工具_自制快速冒烟测试小工具--基于python多线程(2)
原标题:自制快速冒烟测试小工具--基于python多线程(2) 新书 速递 文 |愈知愈无知 快速冒烟测试小工具-(1)分析及准备 三.代码实现-封装 1. 创建包和文件夹目录 Config:存放配置 ...
- python 编写实用小工具-toy: python平时积累的笔记以及编写的小工具
所有人都告诉你怎么活,只有自己没有搞清楚该如何活.相信自己,我们每个人都是主角?? toy Python ?? 献给我亲爱的女朋友--如 ? 介绍 学习 python.matlab 时积累的笔记以及编 ...
- C#:一个拖拽网页图片到本地存储的小工具
当年上学时候写的一个很简单的东西,拖动图片到程序中自动重命名保存到指定位置, 原图文地址:http://user.qzone.qq.com/652768664/blog/1363151915 usin ...
- WeChat之小工具:基于C++程序代码设计的查看微信撤销、撤回消息(包括文本、图片、视频等)GUI小工具
WeChat之小工具:基于C++程序代码设计的查看微信撤销.撤回消息(包括文本.图片.视频等)GUI小工具 导读 哈哈,千万不要给程序猿随便发信息,程序猿认真起来,别说你发的微信信息,就连你 ...
- 使用python制作读取示波器波形的GUI小工具
使用python制作读取示波器波形的GUI小工具 1.使用python创建GUI界面,该界面可以读取CSV数据格式的示波器波形并绘制在GUI界面上 2.可以zoom缩放操作 3.源码见链接 https ...
- python分数计算器_python算法——方程计算器小工具
python算法--方程计算器小工具 工具介绍 方程计算器小工具使用python开发,可实现三元以内一次.二次等方程的计算,包含基本计算器的功能.可用于老师.学生.家长等快速验证方程的求解,检查学生作 ...
- js小工具-给多行文本框添加字符统计
1.简介 在网页开发中,多行文本框是一个比较常见的东西,标签名为textarea,熟悉textarea的朋友应该知道,textarea有一个maxlength属性,可以限制文本框的输入字符数.在开发的 ...
最新文章
- Create, Save, and Open Trace Documents
- RS232接口是如何工作的?
- linux 音频路径,Linux系统中提取DVD音频的方法介绍(转)
- 工控系统的指纹识别技术
- 导出到Excel的操作
- Longest Substring with At Most Two Distinct
- (八)React原理
- 建立带头结点的双向链表_尾插法
- 服务器修改地址,服务器修改管理地址
- 关于vue-template-compiler 源码探究的资料
- 1000道Python题库系列分享
- C程序中如何区分windowsx86,x64
- oracle+纵向存储,oracle横向纵向求和代码实例
- koa ajax,nodejs之koa2请求示例(GET,POST)
- 中国网站备案制度——祸国殃民
- 转载的关于pthread_cond_wait的文章,写的比较详细
- 图片导入ppt后模糊_PPT另存为图片不清晰|为什么PPT导出图片不清晰
- /usr/bin/ssh-copy-id: ERROR: ssh: Could not resolve hostname 192.168.0.114:root/.ssh/authorized_keys
- python爬取公众号文章数据库,爬取微信公众号所有文章的请教
- 网络安全原理与实践学习笔记——设计DMZ