当前位置: 首页 > 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. 参加科学大会
  • 中国人保不再设监事会,国寿集团未再设置监事长职务
  • 秦洪看盘|上市公司业绩“排雷”近尾声,A股下行压力趋缓
  • 五一期间上海景观照明开启重大活动模式,外滩不展演光影秀
  • 李在明当选韩国共同民主党总统候选人
  • 大漠孤烟为何“直”?物理学家在唐诗中读出“不一样的美”
  • 泰山景区管委会:未经审核同意不得擅自举办竞速类登山活动