美文网首页
Python笔记-将图片转换为字符画

Python笔记-将图片转换为字符画

作者: 我开心0536 | 来源:发表于2020-02-17 22:37 被阅读0次

    【功能】
    将jpg图片转换为字母画字符画( python 3.7版本下调试成功)
    【特点】
    1、图片可默认位置,或者手工输入指定图片名
    2、输出字符画高度可以设置,默认为60行


    图片转字符画程序.jpg
    jpg.jpg

    【以下为代码,右上角有复制按钮,可一键复制】

    #2020.2.15 调试完成,运行正确!
    #调用PIL库,需要自己手动安装Pillow库,具体办法请百度查询“python3安装pillow库”
    from PIL import Image
    
    #字符画所用的字母,从左到右越来越淡,最后是一个空格
    codelib = '''@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. '''
    count = len(codelib)
    #print(count)
    
    def transform(image_file):
        codepic = ''   #这一行必须要输入,要不然总是报错
        image_file=image_file.convert("L")  #将原图版转换为L灰度图像 如果是1就是纯黑纯白的二值图像
        for h in range(0,image_file.size[1]):        # 0横向像素数
            for w in range(0,image_file.size[0]):    # 1纵向像素数
                gray=image_file.getpixel((w,h))      # 返回当时像素位置的像素值
                #print(gray)
                codepic = codepic + codelib[int((count*gray)/256)]   #映射
            codepic = codepic + '\n'                               #每行输入换行符
        return codepic
    
    
    #原始图片所在位置,如果路径包含\需要输入\\才可
    print('''
    【图片转字符画程序】 Ver:20200217.01
    
    1、请先将需要转换的图片保存到C盘文件夹下,图片名称为jpg.jpg
    2、转换后的文字画,默认会存放到C盘文件夹下的jpg.txt文件
    ''')
    
    jpgname=str(input('''请在此输入图片所在位置(可直接按回车键,默认位置为c:\\\\jpg.jpg):''') or '''c:\\jpg.jpg''')
    image_file = Image.open(jpgname)
    
    #调整图片大小,具体比例根据原始图片大小调节,可以修改其中的宽0.5和高0.25为合适的数值
    #image_file = image_file.resize((int(image_file.size[0]*0.5),int(image_file.size[1]*0.25)))
    #额外的功能,可以自动计算图片的缩小比例,具体比例为:60/原图高度,即生成的文本共60行,正好可以一屏幕显示。
    print('\n原图片像素横向数量(宽度):'+str(image_file.size[0]))
    print('原图片像素纵向数量(高度):'+str(image_file.size[1]))
    
    hangshu=int(input("\n请在此输入生成字符画的行数(可直接按回车键,默认为60):") or 60)
    bili = float(hangshu/image_file.size[1])
    print('\n为防止生成的字符画太宽太高,自动缩小比例约为:'+str(bili))
    print('缩小后图片像素横向数量:'+str(int(image_file.size[0]*bili)))
    print('缩小后图片像素纵向数量:'+str(int(image_file.size[1]*bili)))
    
    #按比例缩小图片,纵向可以按比例缩小,横向可以缩小一半
    image_file = image_file.resize((int(image_file.size[0]*bili*2),int(image_file.size[1]*bili)))
    
    #额外的功能:  保存变灰、变小后的图片
    #img2 = image_file.convert('L')
    #img2.save('c:\\jpg缩小后.jpg')
    #img2.close()
    
    #输出的文本文件名
    tmp = open('c:\\jpg.txt','w')
    tmp.write(transform(image_file))
    tmp.close()
    input('\n字母画已经生成完毕,请打开c盘文件夹下的jpg.txt文件即可查看')
    

    相关文章

      网友评论

          本文标题:Python笔记-将图片转换为字符画

          本文链接:https://www.haomeiwen.com/subject/nkxwfhtx.html