当前位置: 首页 > news >正文

用ASCII字符转化图片

代码

from PIL import Image

# 定义 ASCII 字符集,从最暗到最亮
ASCII_CHARS = "@%#*+=-:. "

def resize_image(image, new_width=100):
    width, height = image.size
    ratio = height / width
    new_height = int(new_width * ratio)
    resized_image = image.resize((new_width, new_height))
    return resized_image

def grayify(image):
    grayscale_image = image.convert("L")
    return grayscale_image

def pixels_to_ascii(image):
    pixels = image.getdata()
    characters = "".join([ASCII_CHARS[pixel // 25] for pixel in pixels])
    return characters

def main(new_width=100):
    image_path = input("请输入图片的路径: ")
    try:
        image = Image.open(image_path)
    except Exception as e:
        print(f"无法打开图片: {e}")
        return

    new_image_data = pixels_to_ascii(grayify(resize_image(image, new_width)))
    pixel_count = len(new_image_data)
    ascii_image = "\n".join([new_image_data[index:(index + new_width)] for index in range(0, pixel_count, new_width)])

    print(ascii_image)

    with open("ascii_image.txt", "w") as f:
        f.write(ascii_image)

if __name__ == "__main__":
    main()
    

效果

原图

在这里插入图片描述

效果图

在这里插入图片描述

相关文章:

  • Linux怎样源码安装Nginx
  • 论文学习11:Boundary-Guided Camouflaged Object Detection
  • 分享下web3j 常见用法
  • ECharts仪表盘-仪表盘10,附视频讲解与代码下载
  • 深入解析素数筛法:从埃氏筛到欧拉筛的算法思想与实现
  • WindowsAD域服务权限提升漏洞
  • SqlServer Sql学习随笔
  • 同为科技智能PDU保障智驾数据处理快速稳定响应
  • 【Rust】包和模块管理,以及作用域等问题——Rust语言基础15
  • [DeepRetrieval] 用DeepSeek-R1-Zero的思路教会模型怎么用搜索引擎找文本
  • python爬虫概述
  • SAP 附件增删改查与文件服务器交互应用
  • [蓝桥杯 2023 省 B] 飞机降落(不会dfs的看过来)
  • SpringBoot入门-(2) Spring IOC机制【附实例代码】
  • 目标检测20年(一)
  • IIS+ASP程序500错误排查及解决方法
  • 分布式的消息流平台之Pulsar
  • 【Jupyter】notebook无法显示tqdm进度条
  • python pytorch tensorflow transforms 模型培训脚本
  • dijkstra算法——47. 参加科学大会
  • 现场观察·国防部记者会|美将举行大演习“应对中国”,备战太平洋引发关注
  • 推进“三个免于”,上海试点首发进口化妆品快速通关模式
  • 特朗普特使将赴俄见普京,俄方:美俄间谈判艰难且耗时
  • 神舟十九号航天员乘组计划于4月29日返回东风着陆场
  • 神二十瞄准明日17时17分发射
  • 印尼塔劳群岛发生6.2级地震,震源深度140千米