一键将图片转为炫酷字符画

发布时间:2026/9/30 2:41:33

一键将图片转为炫酷字符画 在这篇文章里头, 我们会去用到下面这些个知识点的哦。完整的一个程序, 那个用来把图片转换成字符画的py脚本。请先在命令行工具中找到存放图片文件的那个目录位置, 接着把当前路径切换到那个地方去执行操作, 然后启动名为图片转字符画.py的这个程序脚本并在其后面跟上参数.png这个后缀的标记。这就拿来作为一个给图片用的名称呗。from PIL import Imageimport argparse# 创建实例parser argparse.ArgumentParser()# 定义输入文件、输出文件、输出字符画的宽和高parser.add_argument(file)parser.add_argument(-o,--output)parser.add_argument(--width, typeint, default80)parser.add_argument(--height,typeint, default80)args parser.parse_args()IMG args.fileWIDTH args.widthHEIGHT args.heightOUTPUT args.outputascii_char list($B%8WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_~i!lI;:,\^. )def get_char(r, g, b, alpha256):# 判断 alpha 的值if alpha 0:return # 获取字符集的长度length len(ascii_char)# 将 RGB 值转为灰度值 gray灰度值范围为 0-255gray int(0.2126*r 0.7125*g 0.0722*b)unit (255.0 1)/lengthreturn ascii_char[int(gray/unit)]if __name__ __main__:# 打开并调整图片的宽和高im Image.open(IMG)# WIDTH, HEIGHT im.size# 调整图片尺寸对应到输出的字符画的宽度和高度 Image.NEAREST 表示输出低质量的图片im im.resize((WIDTH, HEIGHT), Image.NEAREST)# 初始化输出的字符串txt # 遍历图片中的每一行for i in range(HEIGHT):# 遍历该行中的每一列for j in range(WIDTH):# 将ji坐标的 RGB 像素转为字符后添加到 txt 字符串txt get_char(*im.getpixel((j, i)))# 遍历完一行后需要增加换行符txt \n# 输出到屏幕print(txt)# 字符画输出到文件if OUTPUT:with open(OUTPUT, w) as f:f.write(txt)else:with open(output.txt,w) as f:f.write(txt)主要的思路, 是首先通过模块去获取图片当中的RGB属性。接着, 要把这些RGB数值转换成灰度值。然后, 根据得到的数值来匹配合对的字符进行拼接。最后, 再把处理好的内容输出到文件里面。接下来是对这个使用的库做简要介绍。将图片进行展示。im Image.open(IMG)im.show()图片基本属性print(im.size,im.format,im.mode)# (100,100)PNGRGB调整图片大小im.resize((w, h), Image.NEAREST)获取该像素点的红色、绿色与蓝色的数值, 最终返回的结果是一个包含这三种元素值的元组格式。im.getpixel((i,j))进行获取字符画的相关操作。灰度值与RGB简介灰度值说的是黑白图像里那个点的颜色深度情况, 它的数值范围一般是从零零到二五五这样来的, 当数值是一百五十五的时候代表白色, 是零的时候代表黑色, 所以我们就把那种黑白图片也叫作灰度图像了。RGB色彩模式是工业界使用的一种颜色标准, 它是通过对红, 简称r的颜色通道进行操作, 还有绿, 简称g的颜色通道, 以及蓝, 简称b的颜色通道的变化来处理颜色的, 这些变化包括通道自身的变化, 也包括它们相互之间的叠加, 通过这种方式来得到各式各样的颜色, rgb这三个字母即是代表红绿色的三个通道中的红色, 绿色, 蓝色这三个通道的意思, 这个标准几乎包括了人类视力所能感知的所有颜色, 所以它就是目前运用最广的颜色系统之一。把像素的红、绿、蓝这三个通道的数值放一起, 套进灰度值的那个计算公式里面去算, 最后就能得到这个像素对应的灰度值了。gray 0.0216*r 0.7125*g 0.0722*b接着, 你可以去创建出一个里面的元素不会互相重复的字符组成的列表, 其中对于灰度值比较小也就是相对较暗的部分使用这个列表开头位置的符号来进行表示, 而对于灰度值比较大也就是相对较亮的部分则使用这个列表最末尾处的符号来进行表示。ascii_char list($B%8WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_~i!lI;:,\^. )最后一步是建立灰度数值和对应的字符画元素之间的映射关系。gray int(0.2126*r 0.7125*g 0.0722*b)unit (255.0 1)/lengthreturn ascii_char[int(gray/unit)]文件保存当.txt文件不存在的时候, 我们就去创建它, 而当该文件已经存在的时候, 我们就用新的内容将其覆盖掉。# 字符画输出到文件if OUTPUT:with open(OUTPUT, w) as f:f.write(txt)else:with open(output.txt,w) as f:f.write(txt)库命令行输入首先利用那个带点的圆括号把实例给创建出来。然后, 再往里面加上命令行参数。大家需要注意, 在参数--width的前面有两个连字符。这两个连字符表示这是一个可选参数。所以, 当大家在命令行输入命令的时候, 可以选择这样去做。python file.py imagename.pngpython file.py imagename.png --width100import argparse# 创建实例parser argparse.ArgumentParser()# 定义输入文件、输出文件、输出字符画的宽和高parser.add_argument(file)parser.add_argument(-o,--output)parser.add_argument(--width, typeint, default80)parser.add_argument(--height,typeint, default80)# 解析并获取参数args parser.parse_args()IMG args.fileWIDTH args.widthHEIGHT args.heightOUTPUT args.output
延伸阅读

更多相关文章

2026/9/30 2:41:33

cocos2d-x双人坦克大战demo:输入分发与碰撞判定实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 2:41:33

Verilog三段式状态机设计:状态编码、串口实现与跨平台映射

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 2:41:33

DETR深度解析:Transformer如何颠覆目标检测的端到端范式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 3:51:37

Model-Optimizer:大模型推理全链路分层优化实践指南

1. 项目概述:Model-Optimizer不是工具名,而是一类工程实践的统称 “Model-Optimizer”这个词在当前技术社区里常被误认为是一个具体软件或开源项目——比如有人搜“Model-Optimizer下载”“Model-Optimizer GitHub”,结果却找不到官方仓库。…

2026/9/30 3:51:37

SFINAE 机制全解析:从 enable_if 到 void_t 的模板实战

有些话说在前头:模板编程里最让人上头的部分,多半不是怎么把类型算出来,而是怎么让编译器“在你不想要的时候别报错,在你想选的时候刚好选对”。SFINAE 就是这一整套把戏的核心发动机。如果你玩 C 模板玩到一定阶段,一…

2026/9/30 3:51:37

大模型推理加速工程实践:TensorRT与vLLM协同部署指南

1. 项目概述:Model-Optimizer不是工具名,而是工程范式的代号“Model-Optimizer”这个标题乍看像某个开源库或GUI软件的名称,但结合NVIDIA、TensorRT-LLM、vLLM、PT文件转换、Docker镜像部署等高频热词,它实际指向的是一整套面向生…

2026/9/30 3:51:37

TensorFlow 2024实战:安装避坑、Keras 3与模型部署全流程

2024年聊起TensorFlow,注定不是一句"PyTorch已经赢了"能概括的。过去一年我在好几个生产项目里来回切换框架,发现一个特别有意思的错位:社交媒体上讨论最多的永远是PyTorch生态、LoRA微调、扩散模型,可当我拉开服务器上…

2026/9/30 3:51:37

自动化脚本实战指南:从Shell到UI、接口与CI部署

这些搜索词扔给我的一瞬间,我基本就明白了——问“自动化与脚本”的人,十个里有八个不是想听理论,而是正被某个具体的活儿追着跑:要么是测试任务重复到吐,要么是部署流程卡得人想骂人,再要么就是成天在不同…

2026/9/30 3:46:37

模型优化实战:从ONNX到TensorRT的量化、剪枝与部署加速指南

算力需求暴涨、落地 deadline 卡得死死的——“模型是训出来了,但根本跑不动”这种话我这两年听了太多。模型结构和训练效果只是第一步,真正考验工程能力的,是把一个训练好的模型安全、高效、低损耗地塞进生产环境。就在这个环节,…

2026/9/29 11:07:23

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/29 21:48:03

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 7:00:49

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 0:01:22

MATLAB+Yalmip+CPLEX实战:综合能源系统优化调度全流程解析

做综合能源系统优化调度这活儿,最痛苦的不是建模本身,而是模型写完之后不知道该怎么求解。看论文里轻飘飘一句“采用Yalmip调用CPLEX求解”,自己上手时却往往卡在环境配置、变量声明、约束写法和求解状态判读上,一耗就是两三天。这…

2026/9/30 0:01:22

I3C比I2C快10倍?RK3576实战:速率、DTS配置与混合总线避坑指南

I3C 比 I2C 快 10 倍?这句话在嵌入式群里传了很久,每次都能吵出一堆截图。前段时间我正好在 RK3576 上调板级 I3C 接口,从控制器寄存器一路摸到 Linux DTS 配置,踩了不少坑,也把这笔速度账彻底算明白了。本文就用 RK35…

2026/9/30 0:01:22

字符串转对象:JSON.parse、new Function与URLSearchParams

“字符串转对象”这几个字,我在技术群里见过的问法至少有十几种:有人拿着一串{a:1,b:2}说 JSON.parse 直接报错,有人要从 URL 里抠出参数,还有人只是想把abc变成能挂属性的东西。js 这门语言里,字符串和对象之间的转换…

2026/9/29 3:53:39

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/29 9:46:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/29 6:36:14

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑