badapple最后一步,讲黑白图转为字符图,然后输出就行了。
from PIL import Image
import os char_s = list(" .,-'`:!1+*abcdefghijklmnopqrstuvwxyz<>()\/{}[]?234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ%&@#$") # 这个是颜色的深浅,我调的是让空白动,原图越黑越稀疏
# 下面一个函数是讲像素映射成阿斯特码
def get_char(r,g,b,alpha=256):
if alpha == 0:
return ' '
# 转换字符集的长度做准备
length = len(char_s)
# 像素的RGB值转换成灰度值
gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
# 计算每个字符对应的gray值区间宽度
# 因为RGB每个分量取值都在0~255之间,所以灰度值gray最大值为256。假如unit计算的区间宽度小于正常256的值,
# 在idx对应字符集中字符的时候就会对应不上,出现报错
unit = (256.0 + 1) / length
# gray值对应到char_s中的位置(索引值),注意返回的是[]
idx = int(gray / unit)
return char_s[idx]
def gettxt(photo_path, save_path):
filelist = os.listdir(photo_path)
filelist.sort(key=lambda x: int(x[:-4])) # 这个很重要,因为默认的按照字典序打开,按照除了后缀外的int类型排序。
show_heigth = 30 # 打印出来的文本大小
show_width = 90
num = int(0)
for item in filelist:
num += 1
print('转化到%d张' % num)
item = photo_path + item
rgb_im = Image.open(item)
txt_name = save_path + str(num) + '.txt'
newfil = open(txt_name, 'w')
im = rgb_im.convert('RGB')
im = im.resize((show_width, show_heigth), Image.NEAREST)
text = ""
for i in range(show_heigth):
for j in range(show_width):
text += get_char(*im.getpixel((j, i)))
text += '\n'
newfil.write(text)
# newfil.close() def main():
read_path = 'E:\\try apple\\1th\\'
save_path = 'E:\\try apple\\2th\\'
# 这样就很简单了,直接输入图片的位置,和要保存到的位置。
gettxt(read_path, save_path) if __name__ == '__main__':
main()

接下来输出就行了:
import os
import time
import threading
from playsound import playsound def getmove(photo_path):
filelist = os.listdir(photo_path)
filelist.sort(key=lambda x: int(x[:-4]))
for item in filelist:
time.sleep(0.02) # 自己做完才知道并不是直接就音画同步了,要自己一点点调,再用pr一点的调。
# os.system("cls") # 有这个速度会变慢,自己试一下就知道了。
filename = photo_path + item
fil = open(filename, 'r')
print(fil.read())
fil.close() def play_audio(music_path):
playsound(music_path) def main():
read_path = 'E:\\try apple\\2th\\'
getmove(read_path)
# 下边这么多是我多线程播放音乐的代码,用到playsound这个,想弄的也可以弄,但是音画不同步,所以我也没用。
same = []
music_path = 'app.mp3'
# same.append(threading.Thread(target=getmove, args=(read_path,)))
# same.append(threading.Thread(target=play_audio, args=(music_path,)))
# for i in same:
# # i.setDaemon(True)
# i.start()
# play_audio(music_path)
# while True:
# pass if __name__ == '__main__':
main()
这些东西刚开始都不知道干啥,一个个函数搜,一点东西弄了几天。
badapple最后一步,讲黑白图转为字符图,然后输出就行了。的更多相关文章
- matlab将rgb图转为灰度图的原理代码
MyYuanLaiPic = imread('e:/image/matlab/Cluo.jpg');%读取RGB格式的图像 MyFirstGrayPic = rgb2gray(MyYuanLaiPic ...
- QImage Color Convert to Gray 转为灰度图
在Qt中,我们有时需要把QImage类的彩色图片转为灰度图,一开始我想的是用QImage的成员函数convertToFormat(),但是试了好多参数,返现转化的图片都有问题,不是我们想要的灰度图,如 ...
- 普通图片转ascii码字符图
效果图 基本思路 把图片每个像素点的信息拿出来,最重要的是拿到rgb的值 把每个像素点由rgb转成灰度图像,即0-255 给0-255分级,把每个等级的像素点转换成ascii码,完成 实现 第一步:获 ...
- 图机器学习(GML)&图神经网络(GNN)原理和代码实现(前置学习系列二)
项目链接:https://aistudio.baidu.com/aistudio/projectdetail/4990947?contributionType=1 欢迎fork欢迎三连!文章篇幅有限, ...
- PGL图学习之图神经网络ERNIESage、UniMP进阶模型[系列八]
PGL图学习之图神经网络ERNIESage.UniMP进阶模型[系列八] 原项目链接:fork一下即可:https://aistudio.baidu.com/aistudio/projectdetai ...
- UML 用例图、顺序图、状态图、类图、包图、协作图、流程图
用例图.顺序图.状态图.类图.包图.协作图 面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling La ...
- UML实践详细经典教程----用例图、顺序图、状态图、类图、包图、协作图
面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling Language™),这篇课程的目的是展示出UML ...
- UML学习(类图和序列图等)
visio绘制UML图使用visio 提示此UML形状所在的绘图页不是UML模型图的一部分 请问这个问题怎么解决?新建->选择绘图类型->选择软件与数据库模板->选择UML模型图-& ...
- Java 图片转换为字符图 CharMaps (整理)
/* * Java 图片转换成字符图 CharMaps (整理) * * 2016-1-2 深圳 南山平山村 曾剑锋 * * @(#)CharMaps.java 2014/1/16 * 1.这个一 ...
- (转)UML实践----用例图、类图、对象图、顺序图、协作图、状态图、活动图、组件图、配置图
面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling Language™),这篇课程的目的是展示出UML ...
随机推荐
- Python_QT_量化投资/量化交易 基础入门课
量化投资/量化交易 基础入门课 https://www.bilibili.com/video/BV1n4411q7ic?from=search&seid=1127232108574476398 ...
- Mac 卸载 Anaconda3
终端安装anaconda-clean conda install anaconda-clean 删除所有与 Anaconda 有关的文件与目录 anaconda-clean --yes 第 2 步中的 ...
- Qt实现collapsePanel(折叠)功能
实践过程中,看到C#实现的CollapsePanel功能,比一般的TabWidget更加直观,充分利用了页面空间,遂感到很有兴趣,也查阅了很多资料搜索Qt在这方面的实现. 目前来说,比较常见的作法就是 ...
- appium程序下载安装/appium desktop
官网地址:http://appium.io/ 点击下载按钮 默认跳转到最新版本,点击 Releases 回到版本列表页 该页可以看到对应的版本及更新时间,(最好不要下载最新版本) 如果是 Window ...
- python修改图片名
1 import glob 2 import os 3 4 inputPath = r'E:/data/pic/cat' 5 fileList = glob.glob(inputPath + '/*' ...
- python实现学生信息管理系统——界面版
前言(写于2022年5月17日) 这篇博客是我两年前大二时写的,一直放在草稿箱里,还没写完,现在快毕业了,突然翻出来了.虽然博客没写完,但早就写好了代码,可运行的exe文件以及文档.现在上传到gite ...
- Abp Abp.AspNetZeroCore 2.0.0 2.1.1 Path
纯手工修改,移除校验代码可调试. 将文件复制到 %userprofile%\.nuget\packages\abp.aspnetzerocore 目录中 替换对应的文件 Abp.AspNetZeroC ...
- mockjs 加上 json-server 快速生成前端数据
const mock = require('mockjs'); // 引入mockjs const data = mock.mock({ "data|20": [{ "i ...
- qt的其他窗口
一.qt的其他类族 2.Qlabel ui->setupUi(this); QFont font;//确立一个字体对象 font.setFamily("华文行楷");//字体 ...
- 使用@Param注解时注意org.springframework.data.repository.query.Param与org.apache.ibatis.annotations.Param的区别
注解@Param有以下两种: 1.Spring org.springframework.data.repository.query.Param 2.mybatis org.apache.ibatis. ...