新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/10/1 15:46:28来源:尧图网络
一键将图片转为炫酷字符画
在这篇文章里头, 我们会去用到下面这些个知识点的哦。完整的一个程序, 那个用来把图片转换成字符画的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
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

NETSOL STT-MRAM工业MRAM芯片S3A系列规格书 2026/10/1 15:46:09

NETSOL STT-MRAM工业MRAM芯片S3A系列规格书

1、接口与速率 ①支持Single/Dual/Quad SPI,兼容SPI Mode 0与Mode 3 ②传输模式支持1-1-1、1-1-2、1-2-2、1-1-4、1-4-4、2-2-2、4-4-4 ③时钟频率最高SDR 108MHz/DDR 54MHz(原MR25H10为40MHz) ④支持XIP(Execute-in-Place&#x…

阅读更多 →
本土一站式科研辅助平台|深度拆解 Okbiye 的综合实力与核心优势 2026/10/1 15:46:09

本土一站式科研辅助平台|深度拆解 Okbiye 的综合实力与核心优势

前言 在各类科研辅助工具层出不穷的当下,很多同学都会陷入一个困境:调研资料要用文献工具,绘制图表要打开绘图软件,调整文档版式还得手动对照校内规范一点点修改。不同工具之间数据互不连通,素材反复导出上传&#xf…

阅读更多 →
苏州高性价比的GEO优化服务商 口碑好的品牌企业汇总 2026/10/1 15:46:09

苏州高性价比的GEO优化服务商 口碑好的品牌企业汇总

苏州聚合增长信息科技有限公司是国内专注制造业等B2B领域AI搜索营销的企业,核心业务为聚合AI GEO国内版与国际版代运营服务,为企业提供从品牌曝光到商业成交的全链路AI全域营销解决方案。 关于苏州聚合增长信息科技有限公司的基础介绍苏州聚合增长信息科…

阅读更多 →
Vivado ILA在线调试:运行触发器、停止触发器与自动重新触发 2026/10/1 15:46:09

Vivado ILA在线调试:运行触发器、停止触发器与自动重新触发

做 FPGA 在线调试的人,手里基本都揣着同一把钥匙——vivado ila。综合布线跑完,接上板子,打开 Hardware Manager,把探针拖进波形窗口,然后就是那几个按钮来回点:运行触发器、停止触发器、自动重新触发。用了…

阅读更多 →
小程序云函数Environment not found错误根因与修复指南 2026/10/1 15:46:09

小程序云函数Environment not found错误根因与修复指南

1. 这不是报错,是环境配置断层——小程序云函数里那个“Environment not found”到底在喊什么你写完云函数代码,本地调试一切正常,npm run dev跑得飞起,日志刷得欢快;可一上传到微信云开发控制台,点开日志一…

阅读更多 →
长三角GEO优化服务商合作实力参考与透明报价服务商 2026/10/1 15:46:03

长三角GEO优化服务商合作实力参考与透明报价服务商

长三角GEO优化服务商合作实力参考与透明报价服务商当采购决策的第一站搬到AI对话框,企业能否被AI主动推荐,直接决定能否进入客户候选名单。选对生成式引擎优化服务商,是制造业、装备企业、法律服务、生鲜配送等各行业在AI搜索时代抢跑的关键一…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉