python图像转字符画_python图像处理-字符画风格图片

前言

字符画图片,顾名思义就是由一个个字符组成的图片,下面这张图片很容易帮助你理解,如果我们可以将字符排列好,让他看上去像一个物体的形状,那么最后再将它输出保存为一张图片就可以实现了。

ca1349540923dd54602d3c7abbd7e7d89d8248ae.png?token=7ff343eddb57a2fe3f5dcaec5466e6e0&s=EFFAA3561B234D3642E504DA000070B3

下面的这些形状同样可以使用这种方式实现。

0e2442a7d933c89523c89490bacd27f68002008f.png?token=05ac86ef385e811744283d8d250dac0c&s=85F24D325956DDCE086431CB0000C0B2

上面的图像看上去还是很不错的,如果要实现一个很复杂的图片,且展示出很多细节特征,那之前的方法就有点不可取了,比如下面的图片。

bd3eb13533fa828b65b4874697c11532950a5ae0.png?token=35baf32902a6f41a181e7f98aa24c90c&s=4B3A33C316A370B8823D69DA030040B3

通过我们今天的程序来处理,就可以很高效实现这种比较复杂且细节比较多的字符画了。

实现原理

我们知道字符画是一系列字符的组合,那要如何将它们变成字符画呢。

这里要解决三个问题:

1.如何将图片变成一个个字符。

2.接着要将他们有序的组织在一起。

3.显示出它们对应的颜色,从而形成一张彩色的字符画。

我们将一张图片想象成由行列组成的方格矩阵。

b3b7d0a20cf431adc432d3f621e8f8a92cdd9805.png?token=a84b3403c30c99af6dae5e8ee5f674d9&s=53397BCA6BA5BB6A5AEDDE1F0300E0C6

方格的每一个位置根据颜色的不同来填写对应的字符,字符的种类越多,可以表现的颜色也越多,图片也会更有层次感。问题来了,我们是要转换一张彩色的图片,这么多的颜色,要怎么对应到单色的字符画上去?这里就要介绍灰度值的概念了。

灰度值:指黑白图像中点的颜色深度,范围一般从0到255,白色为255,黑色为0,故黑白图片也称灰度图像。

现在只有256种可能了,我们找找一串字符,有70个,总体的排列顺序是前面的像素更高,看上去更黑,越往后越低,看上去更亮,数量还是不够,我们可以通过比例来获取将256划分成70等份,每个字符就可以代表一个范围的颜色了。

5366d0160924ab184a0b955e5824b2cb7a890b9a.png?token=07a609d56af10ce932eea51c92945f63

字符画文字实现

d058ccbf6c81800a077d719bddeb67fc808b47eb.png?token=aa0fe63f0d3a13ef3f4e90510f087dca&s=AE80C54AFA8EEC1F8E34E95F000010E3

上面最后虽然出现了结果,由于像素比较高,导致字符串非常多,下面我们去缩小一下整个图片,改善显示效果。

d043ad4bd11373f0ed5b9b20ced11ffdfaed0409.png?token=7800ca23de3fb84c217942485dcb0b01&s=EEA0C54AB08F811F8F35E81F000080E3

上面效果就比较好了,仔细放大查看一下,里面的确全是字符组成的。

63d0f703918fa0ec83ffb4164d490de83c6ddbd2.png?token=0d0179fc8abbf5248688b6c7de516b5d&s=38007C3219C3494B48DDDCCA0000D0B3

变成图片

上面是将字符保存在文件里的,下面看看如何将其保存为图片。因为是通过将文字写到图片里面去的,文字有大小,如果直接用原来文字大小的图片是放不下去的,这里通过将图片变大一点乘以15,目的是为了放下所有文字。

203fb80e7bec54e732229301d5e6cf564dc26ac3.png?token=f959b498d8c8779bbc8214ad3c5f169d&s=AE80954AFECEFE1FCFB4E81F0300C0E3

彩色字符画图片思路

上面实现了黑白字符画图片,如果要实现彩色字符图画,可以将原来的图片在创建一份保留色彩的,在循环中获取对应灰度的时候,在获取对应位置的颜色值,写入时将颜色也同时写入就可以实现彩色字符画效果了。

(全文完)

python图像处理-实现验证码图片(上)

python图像处理-实现验证码图片(下)

python图像处理-gif动图

python图像处理-图片裁剪

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

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

相关文章

react生命周期函数_如何优雅的消灭掉react生命周期函数

开源不易,感谢你的支持,❤ star concent^_^序言在react应用里,存在一个顶层组件,该组件的生命周期很长,除了人为的调用unmountComponentAtNode接口来卸载掉它和用户关闭掉浏览器tab页窗口,该顶层组件是不会…

jolokia_Hawtio和Jolokia的Hibernate统计

jolokia企业Java的很大一部分处理数据。 在企业设置中使用数据的所有不同方式中,仍然存在使用任何种类的O / R映射的行之有效且广泛教授的方法。 JPA标准使每个人都比较容易使用它,并且它也应该是可移植的。 但是,我们不要谈论迁移细节。 O /…

JVM垃圾收集和优化

总览 在对系统进行性能相关问题的故障排除时,内存优化是一个需要深入分析每个系统在内存中存储的内容,存储时间和访问模式的地方。 这篇文章是要在背景信息上进行注释,并在此工作中要注意一些要点,这些工作要专门针对基于Java的实…

redis desktop manager连不上redis_Redis安装教程

Ⅰ 简介Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如字符串(strings),散列(hashes&#…

c++如何将int数组中的值取出*号运算符_如何用动态规划巧妙解决 “双十一” 购物时的凑单问题?羊毛薅起来!!!...

点击上方“程序员大白”,选择“星标”公众号重磅干货,第一时间送达今年过去的 “双十一” ,你有薅到羊毛吗?每年的双十一,会有各种促销活动,比如 “满 300元减 80 元”。假如你女朋友的购物车中有 n 个(n &…

python操作界面_Python使用PyQt5的Designer工具创建UI界面

一、Designer-UI编辑器 Designer是pyqt5-tools带的工具,默认可以在Python安装目录下找到的。我的之前项目导入过pyqt5-tools,所以我直接全盘搜索到了。打开designer后,我们可以编辑我们想要的UI界面,下面是我编辑的测试界面&#…

python统计词频_Python统计四六级考试的词频

Python统计四六级考试的词频此文首发于公众号 「Python知识圈」, 欢迎直接去公众号查看阅读文本大概需要 4.6 分钟。今天是教师节,先祝天下所有老师教师节快乐,感谢您在我学生时代对我的谆谆教诲。现在是开学之初,风华正茂的青年才…

python爬虫数据可视化_适用于Python入门者的爬虫和数据可视化案例

本篇文章适用于Python小白的教程篇,如果有哪里不足欢迎指出来,希望对你帮助。 本篇文章用到的模块: requests,re,os,jieba,glob,json,lxml,pyecharts,heapq,collection 首先 本文我们的目的 抓取周杰伦的所有歌曲, 歌词&#xff0…

mysql中如何卸载插件_Eclipse中如何卸载插件

很久没用Eclipse了,今天打开的时候,突然报Android开发插件需要更新。打开插件管理页面,更新Android插件,又提示和旧版本有冲突,心想只能卸载了重新安装了。找了半天没找到在哪下载,把Eclipse目录下的plugin…

computed怎么使用_Vuex 基本使用

简单介绍iPhone X 是 iPhone, Vuex 并不是 Vue.我们查看官方文档可以知道:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。怎么理解呢?就拿我两位数的资产的银行卡来说吧,基本的存钱取钱,就是状态管理。怎么用我们将以一个简…

windows安装python3步骤_Windows下python3和python2安装与一起使用

一、python2和python3安装 2、安装步骤,直接双击运行,记得勾选添加环境变量就可以。图片1.png 3、安装已经选择了添加这个环境变量,所以不用再去配置。 如果没有勾选,得自己去设置。 鼠标右键我的电脑 -> 属性 -> 点击高级系…

mysql ondelete_MySQL on delete cascade语句

在本教程中,您将学习如何使用MySQL ON DELETE CASCADE引用操作来执行外键从多个相关表中删除数据。在上一个教程中,我们学习了如何使用单个DELETE语句从一个或多个相关表中删除数据。但是,MySQL提供了一种更为有效的方法,称为ON D…

python构建二叉树_BinaryTree:学习二叉树的Python库

Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。简介: 您是否在为考试、作业或技术面试学习二叉树? Binarytree是一个Python库,它通过一个简单的API生成二叉树,可以进行检查和操作。它让您…

mysql union as 注入_sql注入入门 之 mysql 常规注入 [ union方式 ]

1,常规数字型 mysql 实例注入点,如下:1https://www.vuln.com/md_materia_profile_view.php?viewid22,依旧先尝试下经典的单引号,如下,虽然没暴露出明显的数据库报错信息,但我们发现,此时返回的页面已经异常了,经验判断,十有八九是个注入点,先不管那么多,我们继续1https://www.…

gradle docker_带有Gradle的Docker容器分为4个步骤

gradle docker您是否需要通过Java Web应用程序创建Docker映像? 您在使用Gradle吗? 如果是这样,那么您距Docker nivana仅4步之遥。 对于此示例,我将使用一个简单的Spring Boot应用程序。 您可以在我的名为galoshe的Github存储库中…

python socket编程_Python学习记录-socket编程

1. OSI七层模型详解2. Python socket 什么是 Socket? Socket又称”套接字”,应用程序通常通过”套接字”向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。 Python 提供了两个级别访问的网络服务: 低级别的网络服…

判断frame是否已创建_类的创建

1. 士兵 许三多 有一把 AK47 2. 士兵 可以开火 3. 枪 能够 发射 子弹 4. 枪 装填 子弹---增加子弹数量 class Gun:def __init__(self,type):self.type type# 刚开始枪没有子弹self.bullet_count 0def __str__(self):return ("%s 已到位" % self.type)def shoot(sel…

@select注解_Mybatis基本知识十七:Mybatis注解式开发-单表注解式开发

上一篇文章:《Mybatis基本知识十六:查询缓存之第三方查询缓存》若文中有纰漏,请多多指正!!!1.前言使用Mybatis进行开发,不仅可以使用mapper配置文件进行开发,也可以使用注解的方式。映射文件中无…

maven servlet配置_第一个Servlet配置

使用IntelliJ IDEA创建一个Simple Maven项目2. Add Framework Support3. 配置Tomcat打开菜单Run -> 选择Edit Configuration 如果侧边栏没有Tomcat,点击“”号 -> 选择“Tomcat Server” -> 选择“Local”,到此画面 ,Apply -> OK4. 在Tomcat…

ad域管理与维护_U-Mail邮件系统LDAP/AD同步极大提升办公效率

每一位办公族,可能都遇到过这样的问题:1、随着信息化高速发展和企业“互联网”的深入,越来越多的办公平台和软件被开发出来,正如移动互联网端APP应用层出不穷一样,给人们带来了极大地便利性。2、凡事有利有弊&#xff…