Python生成字符画

目录

1.先贴代码

2.运行规范

3.所需模块:

4.原理:

5.详解

第一步:导入模块

第二步:声明一个重要变量

code:参与转换计算的字符集,从左到右醒目程度逐渐减小(黑底白字)

第三步:写个类

类里面的第一个方法:

类里面的第二个方法:

第二个方法的详细说明:

6.结果

7.按照原本图片大小进行转换的代码


1.先贴代码

from PIL import Image
from os import walk
from os import getcwd
from re import findall

code = '''@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,"^`'.'''

'''
需要有一个名为input的文件夹存放源图片文件
需要有一个与input文件夹同级的文件夹out存放导出文件
请将本程序放在与input文件夹同级的位置
'''
'''
当图片只有一张时,请将其命名为数字或含有数字的字符串
当图片不止一张时,如不需要图片有顺序,则可依照上面情况命名
如需要图片有顺序,则全选图片,统一将其命名为一个任意英文字母,此时Windows系统会自动加入序号
图片的修改是无顺序的(东一个西一个),但最终导出的图片是有顺序的
目前只在Windows系统下运行
'''

class PictureToTxt:

    files1=None

    def GetName(self,address=getcwd()+"\\input"):
        for a, b, files2 in walk(address):
            self.files1=files2

    def GetTxt(self,c=210,k=63):
        txt=""

        for d in self.files1:
            image = Image.open(getcwd()+"\\input\\"+d).convert("L").resize((c, k))

            h = image.size[1]
            w = image.size[0]
            for y in range(h):
                for x in range(w):
                    color = image.getpixel((x, y))
                    color = int(color / 256 * len(code))
                    char = code[color - 1]
                    txt += char
                    txt += ""
                txt += "\n"

            for g in findall("\d+", d):
                pass

            with open(getcwd()+"\\out\\"+g+".txt", "w", encoding="UTF-8") as file:
                file.write(txt)

            txt = ""

if __name__ == '__main__':
    picturetotxt=PictureToTxt()
    picturetotxt.GetName()
    picturetotxt.GetTxt()


2.运行规范

'''
需要有一个名为input的文件夹存放源图片文件
需要有一个与input文件夹同级的文件夹out存放导出文件
请将本程序放在与input文件夹同级的位置
'''
'''
当图片只有一张时,请将其命名为数字或含有数字的字符串
当图片不止一张时,如不需要图片有顺序,则可依照上面情况命名
如需要图片有顺序,则全选图片,统一将其命名为一个任意英文字母,此时Windows系统会自动加入序号
图片的修改是无顺序的(东一个西一个),但最终导出的图片是有顺序的
目前只在Windows系统下运行
'''

上几张图就知道是怎么一回事了


3.所需

生成字符画可以通过 Pillow 库中的 Image 和 ImageDraw 模块来实现。具体步骤如下: 1. 使用 Pillow 的 Image 模块打开一张图片,并调整图片大小和色彩模式。 2. 使用 ImageDraw 模块中的 text 方法绘制字符画。 3. 将字符画保存为文本文件或图片格式。 下面是一个生成字符画Python 代码示例: ```python from PIL import Image, ImageDraw, ImageFont # 打开图片 image = Image.open('example.jpg') # 调整图片大小和色彩模式 width, height = image.size scale = 0.1 # 缩放比例 image = image.resize((int(scale * width), int(scale * height))) image = image.convert('L') # 转换为灰度图像 # 设置字符画参数 chars = [' ', '.', ':', '-', '=', '+', '*', '#', '%', '@'] # 字符集 font = ImageFont.truetype('arial.ttf', 10) # 字体和字号 char_width, char_height = font.getsize('A') # 字符的宽度和高度 # 绘制字符画 ascii_art = '' draw = ImageDraw.Draw(image) for y in range(height): line = '' for x in range(width): gray = image.getpixel((x, y)) char = chars[int(gray / 25)] # 根据像素值映射字符集 draw.text((x * char_width, y * char_height), char, font=font, fill='white') line += char ascii_art += line + '\n' # 保存字符画 with open('ascii_art.txt', 'w') as f: f.write(ascii_art) # 显示字符画 image.show() ``` 这段代码可以将一张名为 "example.jpg" 的图片转换成字符画并保存为文本文件 "ascii_art.txt"。可以根据需要自行调整字符集、字体、字号等参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值