用 Python 实现图片转字符画,so easy~

python实现图片转字符画 get_str_img此函数用于遍历黑白图片的每一个像素点,并使用Image中的getpixel方法获得其r,g.b和alpha(并不是每个像素点都有)三个值。首先认清,一张图片是由一个一个像素点组成的,我们转换成字符画就需要将其每个像素点转换成合适的字符。get_new_img函数的作用是裁剪图片将其变为合适的尺寸,这样转换出来的字符画更接近真实。两种字符集我都使用过,在我的代码和测试图片下是方案一的字符集转换出来图片更加真实。字符画是一系列字符组合成的文本,看起来就像一幅画一样,如图1所示。 阅读详情

相信大家在网上经常看到有人秀出各种各样的字符画,对于这个五彩斑斓的世界来说,我们日常看到的都是一些高清的彩色的图片,偶尔来个粗糙的黑白的字符画,还是比较解乏的。

字符画的原理

这种字符画的原理也比较简单,我们可以把每个字符看成是一个大的像素,一个字符可以代表一种颜色,字符各类越多,可体现的颜色越多,字符画就更有层次感。

灰度值和RGB

灰度值是指黑白图像中点的颜色的深度,它的范围是0-255,白色为255,黑色为0,其他颜色介于两者之间。

RGB 是红绿蓝三颜色,通过不同的叠加可得到其他颜色。

要将图片转字符画,需要先定义一个字符集,用来和灰度值做映射,将图片每个像素的 RGB 值转换为一个灰度值,将其对应的字符输出就得到字符画。

RGB 转灰度值,有个转换学公式,来源于网络:

gray = (2126 * r + 7152 * g + 722 * b) / 10000

代码实战

我随意选择了一张图片:

我的目标是转化成下面这样:

根据以上转换原理,我们直接上代码:

from PIL import Image

char = list('M3NB6Q#OC?7>!:–;. ')

def get_char(r, g, b, alpha=256):
    if alpha == 0:
        return ' '
    
    grey = (2126 * r + 7152 * g + 722 * b) / 10000
    
    char_idx = int((grey / (alpha + 1.0)) * len(char))
    return char[char_idx]

def write_file(out_file_name, content):
    with open(out_file_name, 'w') as f:
        f.write(content)

def main(file_name="input.jpg", width=100, height=80, out_file_name='output.txt'):
    text = ''
    im = Image.open(file_name)
    im = im.resize((width, height), Image.NEAREST)
    for i in range(height):
        for j in range(width):
            text += get_char(*im.getpixel((j, i)))
        text += '\n'
    print(text)
    write_file(out_file_name, text)

if __name__ == '__main__':
    main('dance.png')

程序的思路:

  • 定义一个字符数组,这个数组里面的字符可以随意写。

  • 解析图片,将图片里面的每个像素点解析成 RGB 值。

  • 根据我们上面的公式,将每个像素点转换成字符数组里面的一个字符。

  • 将所有像素点对应的字符拼接起来,就完成了转换。

总结

图片转字符画,转换的原理和思路还是比较简单的,实现也不复杂,大家可以动手试试看!

以上就是本次分享的所有内容,如果你觉得文章还不错,欢迎关注公众号:Python编程学习圈,每日干货分享,发送“J”还可领取大量学习资料,内容覆盖Python电子书、教程、数据库编程、Django,爬虫,云计算等等。或是前往编程学习网,了解更多编程技术知识。

Python实现图片转字符画 初学Python,在网上看到Python图片转字符画的教程,我也来尝试下。 首先我们要用到Python的PIL库的Image模块,PIL(Python Imaging Library)库是Python的一个图像处理库。想了解PIL的详细功能介绍,可参考PIL的官方文档(虽然我也没看过,不过还是贴上来):http://effbot.org/imagingbook/图片转字符画的关键思想是将图片的灰度 阅读详情

相关推荐

Python 实现图片转字符画的示例(静态图片,gif皆可)

字符画是一种由字母、标点或其他字符组成的图画,它产生于互联网时代,在聊天软件中使用较多,本文我们看一下如何将自己喜欢的图片转成字符画。 静态图片 首先,我们来演示将静态图片转为字符画,功能实现主要用到的 Python 库为 OpenCV,安装使用 pip install opencv-python 命令即可。 功能实现的基本思路为:利用聚类将像素信息聚为 3 或 5 类,颜色最深的一类用数字密集度表示,阴影的一类用横杠(-)表示,明亮部分用空白表示。 主要代码实现如下: def img2strimg(frame, K=5): if type(frame) != np.ndarray:

python 图像识别pytesseract快速设置

一、安装Tesseract 以window安装为例,参考:https://segmentfault.com/a/1190000014086067 note: 使用虚拟环境需要: 在 python 环境(或虚拟环境) \Lib\site-packages\pytesseract 目录下找到 pytesseract.py , 打开 pytesseract.py , 在 32行 ,找到 变量 tesseract_cmd,修改 tesseract_cmd 值: tesseract_cmd = 'C:\

winterye12的博客 479

SAP后台JOB保姆级教程:从SM36创建到SM37监控,手把手教你搞定ABAP程序定时任务

本文详细解析SAP后台JOB从创建到监控的全流程,重点介绍SM36创建和SM37监控的操作步骤与最佳实践。通过真实案例演示如何配置定时任务、处理常见故障及实施企业级管理策略,帮助ABAP开发者高效管理后台程序执行。

weixin_30838873的博客 431

python 符号识别_简单符号识别python

这与我一直从Coderbyte“简单符号”得到的错误有关。我试图确定字符串中的一个字符在它的前面和后面是否有特定的字符。我写的东西在我的终端上正常工作,但是我一直从Coderbyte得到同样的错误。在我是个十足的傻瓜,我的代码一点也不优雅。我知道,我更关心的是错误。在def SimpleSymbols(str_):str_ = str(str_)letters = "abcdefghijklmno...

weixin_42253260的博客 1057

halcon与c#联合编程实现相机控制+图像平移缩放+日志记录+缺陷检测+路径规划

halcon与c#联合编程实现相机控制+图像平移缩放+日志记录+缺陷检测+路径规划 前言 本人近期在工作中遇到需要对某场景下利用海康相机进行图像缺陷检测与对应路径规划。通过对海康相机示例代码进行吸收与借鉴,最终实现了对海康相机的控制,并增加HSmartWindowControl控件,实现图像的实时显示与平移缩放功能;通过listview+toolstrip实现日志显示与类型(提示、警告、错误)分类;同时自行编制算法实现对缺陷的识别以及缺陷外扩矩形范围内的路径规划。 1.日志记录 代码如下(示例):

weixin_37864926的博客 2717

避坑指南:QT Creator报Unknown module(s) in QT: serialport的5种解决方法

本文详细解析了Qt Creator报'Unknown module(s) in QT: serialport'错误的5种解决方法,包括检查Qt版本兼容性、安装缺失组件、配置Kit环境等。针对Windows和Linux平台提供具体操作步骤,帮助开发者快速解决串口通信模块问题,提升开发效率。

weixin_29197051的博客 157

如何利用python实现图片转化字符画

利用python实现图片转化字符画,

weixin_45841831的博客 1547

别再只盯着DDR5了!聊聊3D DRAM:它凭什么能解决AI算力的内存墙难题?

本文深入探讨了3D DRAM技术如何突破AI算力的内存墙限制。通过立体堆叠架构,3D DRAM在存储密度、带宽和延迟方面实现显著提升,有效解决AI训练和推理中的内存瓶颈问题。文章还分析了三星、SK海力士等巨头的技术路线图,并指出商业化面临的挑战与机遇。

weixin_42685438的博客 189

Python实现简单截图识别获取文字符号信息

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.youkuaiyun.com/weixin_42365530 有时候我们百度出来一些自己需要信息后,想要直接复制粘贴(借鉴借鉴),提升工作效率,比如学校要求写什么加油稿,期末总结,思想汇报啊…额~,被请去办公室喝茶了,到时别说是博主教的啊!但是百度文库经常会限制我们复制...

遇见0和1的博客 4094

Android 10.0 kenel中修改rom系统内部存储的大小

在10.0的系统rom产品开发定制中,在对一些产品开发中的配置需求方面,由于在产品后续订单中,有些产品是出口的,但是硬件方面已经定板,时间比较仓促,所以 就需要软件方面在rom内部存储的大小方面作假,修改rom真实的大小容量,所以就需要在kenel驱动部分来修改这部分的值最好了,接下来分析下计算rom容量的 相关代码,然后做出修改

安卓兼职framework和app工程师的博客 1405

24、流化催化裂化的分子建模

本文探讨了流化催化裂化(FCC)的分子建模方法,重点分析了如何通过机理建模和模型修剪策略(如反应规则和随机规则)来减少计算复杂度,同时保持化学意义。文章还介绍了定量结构反应性关联(QSRC)在动力学参数确定中的应用,以及结焦对催化剂活性的影响。通过这些方法,FCC反应模型能够在预测产物分布的同时,显著提高计算效率。

s8t9u0v1w的博客 141

python动态图片转字符画_Python实现图片转字符画的代码实例

原理1. 计算出图片颜色对应的灰度值,计算公式如下gray = 0.2126 * r + 0.7152 * g + 0.0722 * b2. 根据灰度值,从字符集中获取图片中每个像素点对应的字符代码# !/usr/bin/env python# -*- coding:utf-8 -*-from PIL import Imageimport argparse#命令行输入参数处理parser = ar...

weixin_39641450的博客 498

YOLO26-seg分割优化:轻量化卷积魔改 | 新的partial convolution(PConv)结合C3k2 | CVPR2023

​​​​​摘要:本研究对Ultralytics YOLO26进行了全面分析,重点阐述了其关键架构改进及其在实时边缘目标检测中的性能基准测试。YOLO26于2025年9月发布,是YOLO系列最新、最先进的成员,专为在边缘及低功耗设备上实现高效、精确且易于部署的目标而构建。本文依次详述了YOLO26的架构创新,包括:移除了分布焦点损失(DFL);采用端到端的无NMS推理;集成了渐进损失(ProgLoss)与小目标感知标签分配(STAL);以及引入了用于稳定收敛的MuSGD优化器。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 151

python实战小项目——图片转换为字符画

python实战小项目——图片转换为字符画

timberman666的博客 5812

YOLO26核心模块解析:SimSPPF轻量化空间金字塔池化的原理与优势详解

SimConv作为现代深度学习的基础构建块,其设计虽然简洁,但包含了多项关键技术的有机组合。通过将卷积、批量归一化和激活函数整合为统一模块,SimConv不仅提供了稳定的训练特性和良好的表达能力,还为后续更复杂网络架构的发展奠定了基础。SimConv的成功在于其体现了深度学习设计的核心理念:简洁性与有效性的平衡。它证明了通过合理的技术组合,可以在不显著增加复杂度的前提下大幅提升模型性能。随着深度学习技术的持续发展,SimConv及其变种将继续作为重要的基础组件,推动计算机视觉和人工智能技术的进步。

know_F0727的博客 2619

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Python图片转字符画

进入函数,如果透明度为0时,说明这个像素点是白色背景,打印空格。每一种颜色对应一个灰度值,通过char_idx=int((grey / (alpha+1.0))*len(char))得到每一种颜色对应的下标,再根据下标找到char中对应的字符,传给主函数。第二步,使用img=img.resize((width,height),Image.NEAREST)改变图片大小,在这里宽高设置为100和80,这里第二个参数Image.NEAREST是低质量缩放,默认也是这个,可以不用加。4.把每个像素点的值改成字符。

2301_80339607的博客 1435

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

基于Python的图片转为字符画的系统

Pillow 是 Python 图像处理库,使用该库实现图片转换为字符画的功能。

一只程序猿子的博客 1083

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

用 Python 实现图片转字符画,so easy!

作者 | 派森酱来源 |Python技术相信大家在网上经常看到有人秀出各种各样的字符画,对于这个五彩斑斓的世界来说,我们日常看到的都是一些高清的彩色的图片,偶尔来个粗糙的黑白的字符画,还是比较解乏的。字符画的原理这种字符画的原理也比较简单,我们可以把每个字符看成是一个大的像素,一个字符可以代表一种颜色,字符各类越多,可体现的颜色越多,字符画就更有层次感。灰度值和RGB灰...

AI科技大本营 3825

python根据图像生成字符画

生成字符画(ASCII Art)是将一幅图像使用字符和符号重新绘制的过程,它既可以是一项艺术,也可以用于图像压缩等领域。函数将图片中的每个像素值转换为相应的 ASCII 字符,并将结果写入到文本文件中。在运行时,我们需要将代码中的。这段代码使用 Pillow 库中的 Image 类打开图片,再对其进行缩放,随后调用。更改为对应的图片路径。

l0760over的博客 1206

[Python]图片转字符画——这就是我的表情!!!!!!

偶尔看到一些视频,他们把图片转字符画,平常也没有去关注,今天来捣鼓一下。研究了一下还超级简单的,都是调用别人写好的框架。网上也有很多教学。

码鹿的记录 769

Python将图片转换为ASCII字符画

教你如何使用python将图片转为字符画

小小明-代码实体的专栏 2万+

Python实现的图片转字符画,附源码

学习Python基础语法已经有一段时间了,但是对于各种库的使用还是一知半解的,所以找了几个有意思的小项目练手,这是第一个项目:图片转换成字符画。 效果如下 大概思路如下: 根据像素值的不同在对应位置将像素值映射成合适的字符,就是像素值低的地方映射点阵占位少的字符如’.’,在像素值高的地方映射点阵占位多的字符如’$’。 首先,准备好图片转换后的字符: charset = ['.', '!', '...

u013238941的专栏 1万+

java 根据图片的像素RBG值转换成文字符号

package test;import java.awt.image.BufferedImage; import java.io.*;import javax.imageio.ImageIO;public class StringDraw { public static void main(String[] args) throws IOException { Str

InE 2559

Python制作字符画(pillow,numpy的使用)

如何使用python制作字符画,这里使用的是pillow和numpy这两个python的库

jakelihua 5400

【实例】Python 简单的 图片转字符画(1),IDEA太强悍了

如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费。

2401_84240129的博客 688

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 415
上一篇: 太帅了,我用炫酷大屏展示爬虫数据
下一篇: Python小工具:五分钟处理完一天的工作量,真香
程序员小六
博客等级 码龄6年 111粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值