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 ...
随机推荐
- 专业家庭影音服务器-软件平台及安装-Ubuntu+Docker+Portainer+宝塔linux面板
服务器安装什么系统呢? 如果说操作简单考虑和黑群晖(应为没有买群晖的硬件,自己没法装正版系统), 还是各种NAS系统,TrunNAS.URaidn OS,...一查种类还真的不少,简直是选择恐惧症,总 ...
- JLink OB SWI 取代串口打印的方式
1:debug的串口被占用 2:从Keil 迁移到的LINUX下开发. 3:手上只有JLinkOB,(4线:CLK,SWIO,GND,RST) 4:设备只引出了4线(SWO 没接出) 环境: JLin ...
- 使用autoIt 上传文件(参数化)
1.编写autoit脚本:upload.au3 ControlFocus("打开", "", "Edit1") ;用于识别windwos窗口 ...
- 正则url匹配
今天来说一下正则的url匹配 示例:url ="https://v5.lairen.com/activity?id=862&code=ab9a61823398273b7b036fd9 ...
- Vue的学习(2)
Vue.js的模板语法 1.数据绑定的最常见的方法是插值法,写法{{}} 2.输出html代码,命令为v-html 例如: <div id="app"> <p v ...
- 通过Linux的socket套接字实现客户端与服务器端的通信
具体案例:使用树莓派ds18b20温度传感器实现温度上报 首先需要获得传感器文件中保存的温度信息: 温度信息通常保存在路径为"/sys/bus/w1/devices/28-xxxxxxxxx ...
- springboot配置类@ConfigurationProperties报错Not registered via @EnableConfigurationProperties or marked as Spring component
添加一个@Component可以解决此问题,只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能.
- 基于Nginx以及web服务器搭建在线视频播放
安装Nginx Nginx官网下载地址 网址打开后如图 下载windows版本的Nginx,这里下载最新的1.18.0版本 Nginx在windows下的安装只需要将其解压缩即可.建议将解压后的目录移 ...
- C++解决海盗分金问题
#include <iostream> #include <unordered_map> #include <map> // 假定:每个海盗都是一样的聪明,没有谁比 ...
- [Leetcode 787]中转K站内最便宜机票
题目 n个城市,想求从src到dist的最廉价机票 有中转站数K的限制,即如果k=5,中转10次机票1000,中转5次机票2000,最后返回2000 There are n cities connec ...