ChowHX 2019-05-24 17:55 采纳率: 0%
浏览 436

python如何将图片批量转换为字符形式?

如题
手上有一段可以将单张图片转换为字符形式的代码
现在打算将一段视频的每一帧分离出来(已实现),再将这每一帧转换为字符形式
但是不清楚如何**进行批量操作**,还有该如何才能防止转换后图片乱序问题(因为转换完后还要将这些字符形式的图片合成成视频)

# coding=gbk

import os
from PIL import Image,ImageDraw,ImageFont
import argparse

IMG = r'C:/Users/username/Desktop/1.jpg'  #文件路径
#im = r'C:/Users/username/Desktop/1.jpg'
ascii_char = list("MNHQ$OC67)oa+>!:+. ")

#将像素转换为ascii码
def get_char(r,g,b,alpha = 256):
    if alpha == 0:
        return ''
    length = len(ascii_char)
    gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
    unit = (256.0+1)/length
    return ascii_char[int(gray/unit)]

if __name__=='__main__':
    im = Image.open(IMG)
    WIDTH = int(im.width/6) #高度比例为原图的1/6较好,由于字体宽度
    HEIGHT = int(im.height/15)  #高度比例为原图的1/15较好,由于字体高度
    im_txt = Image.new("RGB",(im.width,im.height),(255,255,255))
    im = im.resize((WIDTH,HEIGHT),Image.NEAREST)
    txt = ""
    colors = []
    for i in range(HEIGHT):
        for j in range(WIDTH):
            pixel = im.getpixel((j,i))
            colors.append((pixel[0],pixel[1],pixel[2]))#记录像素颜色信息
            if(len(pixel) == 4):
                txt += get_char(pixel[0],pixel[1],pixel[2],pixel[3])
            else:
                txt += get_char(pixel[0],pixel[1],pixel[2])
        txt += '\n'
        colors.append((255,255,255))
    dr = ImageDraw.Draw(im_txt)
    font=ImageFont.load_default().font#获取字体
    x=y=0
    #获取字体的宽高
    font_w,font_h=font.getsize(txt[1])
    font_h *= 1.37 #调整后更佳
    #ImageDraw为每个ascii码进行上色
    for i in range(len(txt)):
        if(txt[i]=='\n'):
            x+=font_h
            y=-font_w
        dr.text([y,x],txt[i],colors[i])
        y+=font_w
    #输出
    im_txt.save(r'C:/Users//Desktop/1.png')

  • 写回答

1条回答 默认 最新

  • 堅持就是勝利! 2023-11-25 10:11
    关注

    加个循环

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!