python用字符组成图像代码实例
作者:autofelix 发布时间:2023-09-15 02:12:04
标签:python,字符,图
一、特效预览
处理前
处理后
细节放大后
二、程序原理
将图片所在的 256 的灰度映射到相应的字符上面
也就是 RGB 值转成相应的字符
然后再将字符其写入文件即可
你听懂了吗
三、程序源码
#!/usr/bin/env python
# encoding: utf-8
from PIL import Image
class charsetPicture:
'''
This is a main Class, the file contains all documents.
One document contains paragraphs that have several sentences
It loads the original file and converts the original file to new content
Then the new content will be saved by this class
'''
def __init__(self):
self.char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
self.width = 160
self.height = 60
def hello(self):
'''
This is a welcome speech
:return: self
'''
print('*' * 50)
print(' ' * 18 + '图片转换为字符图片')
print(' ' * 5 + 'Author: autofelix Date: 2022-01-07 13:14')
print('*' * 50)
return self
def get_char(self, r, g, b, alpha=256):
'''
将256灰度映射到70个字符上,也就是RGB值转字符的函数
:alpha: 透明度
:return: self
'''
if alpha == 0:
return ' '
length = len(self.char)
gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
unit = (256.0 + 1) / length
return self.char[int(gray / unit)]
def run(self):
'''
The program entry
'''
im = Image.open('assets/aaa.jpeg')
im = im.resize((self.width, self.height), Image.NEAREST)
txt = ''
for i in range(self.height):
for j in range(self.width):
txt += self.get_char(*im.getpixel((j, i)))
txt += '\n'
print(txt)
with open('handler.txt', 'w') as f:
f.write(txt)
if __name__ == '__main__':
charsetPicture().hello().run()
来源:https://blog.csdn.net/weixin_41635750/article/details/122416621


猜你喜欢
- 为什么需要垃圾回收(GC)程序和人一样,生活时间长了会产生垃圾,程序在运行过程中也会产生垃圾,垃圾积攒过多后,会导致程序运行速度变慢。在Ja
- 如何制作一个倒计时的程序? 见下:<%CountdownDate = #1/1
- 解包在英文里叫做 Unpacking,就是将容器里面的元素逐个取出来放在其它地方,好比你父母去菜市场买了一袋苹果回来分别发给家里的每个成员,
- Python中numpy数组的合并有很多方法,如- np.append() - np.concatenate() - np.stack()
- 和C/C++、Java等语言一样,python在命名上也有一套约定俗成的规则,符合规范的命名可以让程序的可读性大大增加,从而使得代码的逻辑性
- 示例:mysql> DELIMITER //mysql> CREATE PROCEDURE `statis`()
- 1 数据离散化1.1 为什么要离散化连续属性离散化的目的是为了简化数据结构,数据离散化技术可以用来减少给定连续属性值的个数。离散化方法经常作
- 介绍shutil 名字来源于 shell utilities,有学习或了解过Linux的人应该都对 shell 不陌生,可以借此来记忆模块的
- 步骤:1.从php.net上面下载php5.3.x版本的源码;2.centos安装相应的扩展包:yum install libmcrypt
- 本博文源于《python数据可视化》(黑马程序员编著)。先讲解bar参数如何使用,然后分别演示堆积柱形图和带误差柱形图画法。bar参数bar
- 前言看到某60的网速悬浮球有点心动,但是又不想装这个流氓软件,就自己用python加PyQt5自制了一个,实测还行,关键不占用电脑一点资源,
- 声明,本文中所称CSS雪碧即为CSS Sprites,这个词组一直没有一个固定或者约定俗成的中文翻译,一些人开始称之为CSS雪碧,我们且当作
- 开发环境:Pycharm 2018.3 + Anaconda3(5.3.0) + Python 3.7.1 + Numpy 1.15.4在此
- 多的不说,看了代码就懂了!df = pd.DataFrame ({'a' : np.random.randn(6), &nb
- 在pycharm中创建django项目的方法步骤,分享给大家,具体如下:创建完成后,我们可以看看django项目是否可以启动在Termina
- 今天成功把易语言调用验证码通杀的DLL在Python中成功调用了特此共享出来,下面是识别截图:识别方法1:"""
- 本文实例讲述了Yii2框架实现登陆添加验证码功能。分享给大家供大家参考,具体如下:models中LoginForm.phppublic $v
- Update Tb_Garden1 G Set Steward = (Select Id From Zyq.Tb_User U Where
- 怎么样才能设计出漂亮的网页?怎么样才能做好网页设计工作,现在许多人还停留在网页制作的水平上,认为只要用好了网页制作软件,就能搞好网页设计了,
- 说起来惭愧,总是犯一些小错误,纠结半天,这不应为一个分号的玩意折腾了好半天! 错误时在执行SQL语句的时候发出的,信息如下: Java代码