sql数字转换为字符_Python|图片转换为字符画^_^

我们很清楚什么是图片,无外乎png、jpg等格式的文件,例如这个?

c6d6d76e0f599a426a9dba81038fdab1.png

但什么是字符画呢?先看一下官方介绍:

字符画,一种由字母、标点、汉字或其他字符组成的图画。简单的字符画是利用字符的形状代替图画的线条来构成简单的人物、事物等形象,它一般由人工制作而成;复杂的字符画通常利用占用不同数量像素的字符代替图画上不同明暗的点,它一般由程序制作而成。字符画是互联网时代的产物,通常应用于即时聊天中。

简单一句话:就是把图片 png、jpg 等格式转为文本 txt 格式。例如这个

c6ac2375f8bbffff0205f01cabceb955.png

要把图像转换为文本,这其中有一个很大的困难,就是文本没有颜色,所以特别引进了一个概念:文本灰度,就是把不同字母在屏幕上显示的大小排序,得到一张灰度表,用这个灰度表来转换图片,可以达到比较好的效果。

话不多说,还是上代码才是硬道理。

友情提示:如果还未安装PIL,请先安装。在终端运行该命令:pip install Pillow

第一步:先准备一些会使用到的符号

serarr = ['@', '#', '$', '%', '&', '?', '*', 'o', '/', '{', '[', '(', '|', '!', '^', '~', '-', '_', ':', ';', ',', '.', '`', ' ']

第二步:获取图片的宽、高、调整图片灰度;根据条件创建字符

count = len(serarr) # 字符数组的长度def toText(image_file): # 该参数为图片文件    asd = ''  # 储存字符串    for h in range(0, image_file.size[1]):  # 遍历图片高度的坐标点        for w in range(0, image_file.size[0]):  # 遍历图片宽度的坐标点            r, g, b = image_file.getpixel((w, h))  # 获取图片各个坐标点的颜色值            gray = int(r * 0.299 + g * 0.587 + b * 0.114) # 调整图片灰度            asd = asd + serarr[int(gray / (255 / (count - 1)))] # 根据灰度选择字符并进行拼接        asd = asd + '\r\n' # 换行    return asd

完整代码如下:

from PIL import Imageserarr = ['@', '#', '$', '%', '&', '?', '*', 'o', '/', '{', '[', '(', '|', '!', '^', '~', '-', '_', ':', ';', ',', '.', '`', ' ']count = len(serarr)def toText(image_file):    asd = ''      for h in range(0, image_file.size[1]):          for w in range(0, image_file.size[0]):              r, g, b = image_file.getpixel((w, h))            gray = int(r * 0.299 + g * 0.587 + b * 0.114)            asd = asd + serarr[int(gray / (255 / (count - 1)))]        asd = asd + '\r\n'    return asdimage_file = Image.open("22.jpg")  # 打开图片tmp = open('tmp.txt', 'a')  # 打开保存文件,如果没有该文件会自动创建tmp.write(toText(image_file)) # 写入tmp.close()

不到20行的代码就完成个该功能,有没有很简单?!快来试一下吧。下面来欣赏一下我的成果。

105b83f072dfd843dd527e6d84f7b5fa.png

b1534d351161e05cc3f71ef30c088b85.png

PS友情提示:

1、如果运行完发现 txt 文件打开之后不像图片,可缩小字体查看,直到图片显示完全。

2、如果出现类似红点点的内容,可将 txt 自带的检查拼写这个功能取消。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490466.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全球机器人产业趋势及特征

来源:创新研究当前,全球机器人市场规模持续扩大,工业机器人市场增速回落,服务、特种机器人增速稳定。技术创新围绕仿生结构、人工智能和人机协作不断深入,产品在教育陪护、医疗康复、危险环境等领域的应用持续拓展&…

matplotlib调整图例的位置

plt.legend(locxx) 其中loc的可选项有以下几种 upper right upper left lower left lower right right center left center right lower center upper center

使用spring-data-mongodb操作mongodb

mongodb.xml <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:mongo"http://www.springframework.org…

python支持向量机_支持向量机(SVM)Python实现

什么是支持向量机? “支持向量机”(SVM)是一种监督机器学习算法&#xff0c;可用于分类或回归挑战。然而&#xff0c;它主要用于分类问题。在这个算法中&#xff0c;我们将每一个数据项作为一个点在n维空间中(其中n是你拥有的特征数)作为一个点&#xff0c;每一个特征值都是一…

AR智能提升工业效率的4大场景与应用实践!

来源&#xff1a;北京物联网智能技术应用协会导 读 ( 文/ e-works整理 )德国学者提出“工业4.0”的概念&#xff0c;即以智能制造为主导的第四次工业革命&#xff0c;或革命性的生产方法。主要围绕两大主题&#xff0c;一是“智能工厂”&#xff0c;二是“智能生产”&#xff0…

matplotlib画图设置线条透明度

plt.plot(x, y, alpha0.5) alpha这个参数用于设置透明度&#xff0c;0~1之间 alpha越小&#xff0c;线条越透明

手机进销存系统/供应链管理系统

花了将近两个月的时间学习了一个企业级进销存项目&#xff0c;已经结束了两周多&#xff0c;现在终于有时间来对这个项目的学习做个总结了&#xff01; 一、首先介绍下这个项目 (注&#xff1a;本人目前大三&#xff0c;专业为信息管理&#xff0c;与编程沾边不多。而我对编程很…

如何评价马云和马斯克在世界人工智能大会的对话?

来源&#xff1a;刘锋的未来课堂马云和马斯克在世界人工智能大会的对话&#xff0c;虽然风轻云淡&#xff0c;天马行空&#xff0c;但两个人其实是针锋相对的&#xff0c;马云的观点是认为人工智能还是人类的工具&#xff0c;为人类的未来提供服务&#xff0c;马斯克继续保持他…

linux 检测mysql链接_MySQL笔记

#忘记原始密码1、修改 /etc/my.cnf&#xff0c;在 [mysqld] 小节下添加一行&#xff1a;skip-grant-tables12、重启mysql&#xff1a;service restart stop3、刷新权限&#xff1a;flush privileges;4、修改密码&#xff1a;alter user rootlocalhost identified by Kgj2019;若…

matplotlib设置多个图例横向水平放置

一般多个图例都是竖向放置 如果想要多个图例横向放置&#xff0c;设置plt.legend的ncol参数&#xff0c;ncol参数表示将图例分为多少列&#xff0c;以两个图例横向放置为例&#xff1a; plt.legend(ncol2)

内存对齐分配策略(含位域模式)

&#xff11;&#xff1a;内存对齐定义&#xff1a; 现在使用的计算机中内存空间都是按照字节划分的&#xff0c;从理论上讲似乎对任何类型的变量的访问可以从任何地址开始&#xff0c;但是实际上计算机系统对于基本数据类型在内存 中的存放位置都有限制&#xff0c;要求这…

科技部发布新一批国家新一代人工智能开放创新平台

来源&#xff1a;科技部8月29日上午&#xff0c;在上海举办的2019世界人工智能大会开幕式上&#xff0c;科技部李萌副部长发布了新启动建设的十家国家新一代人工智能开放创新平台。分别是&#xff1a;依托上海依图网络科技有限公司建设视觉计算国家新一代人工智能开放创新平台&…

开发里程碑计划_里程碑——让你轻松控制项目进度

对于项目结果的最好控制就是控制项目开发的过程&#xff0c;也就是控制项目开发过程中的几个关键节点——项目的里程碑事件。通过对里程碑事件的控制用于评估项目各阶段工作进展的有效性&#xff0c;以及及时的明确开发过程中存在的风险过程。我们在做项目开发计划的时候&#…

C++大小写字母互转

大写字母的ASCII码比小写字母的小&#xff0c;且两者相差32&#xff0c;所以要将大写字母转为小写字母&#xff0c;将大写字母32&#xff0c;反之&#xff0c;要将小写字母转为大写字母&#xff0c;小写字母-32 int main(){char c A;char c2 c 32;cout << c2 <<…

SQL Server数据库大型应用解决方案总结【转】

【IT168 技术】随着互联网应用的广泛普及&#xff0c;海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用&#xff0c;每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。 一、负载均衡技术 负载均衡集…

C++返回char*第n个位置开始的子字符串

直接令char*的指针n &#xff0c;即获得了char*第n个位置的地址 int main(){int n 3;char* c "abcdeffffff";char *temp cn;cout << temp << endl;return 0; }

Python正在吞噬世界

来源&#xff1a; AI前线AI 前线导读&#xff1a;2018 到 2019 年&#xff0c;所有编程语言的流行度都在下滑&#xff0c;除了 Python。Python 为什么会变得越来越火&#xff1f;本文梳理了 Python 的发展史&#xff0c;试图揭示背后的秘密。1994 年末&#xff0c;一群来自美国…

登录python自动化_Appium+Python实现自动化登录

#AppiumPython实现自动化测试 Appium简介 官方的概述为&#xff1a; Appium is an open source test automation framework for use with native, hybrid and mobile web apps. It drives iOS, Android, and Windows apps using the WebDriver protocol. Appium是一个开源的测试…

lvalue-xvalue-prvalue

• iM: has identity and cannot be moved from • im: has identity and can be moved from (e.g. the result of casting an lvalue to a rvalue reference) • Im: does not have identity and can be moved from 转载于:https://www.cnblogs.com/Searchor/p/5604736.html

C++ const vector的迭代器

vector<int>::const_iterator it a.begin(); int main(){const vector<int> a { 1, 2, 3 };vector<int>::const_iterator it a.begin();for (; it ! a.end(); it){cout << *it << endl;}return 0; }