码迷,mamicode.com
首页 > 其他好文 > 详细

图片转字符串

时间:2018-02-27 01:03:12      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:一点   pen   ascii   不能   python   open   rgb   --   document   

网上看的实验楼的教程,自己理解了一下。可还是觉得不好,因为不能复制,太傻了敲。就在自己电脑上运行。结果发现居然还要在CMD里启动。效果不理想

决定把它改良一下,太呆滞了,用命令行打开。而且效果和我差的有点远啊。

有空去网上找下,把它给修改一下。应该挺多的。洗澡去了;

太不友好了,CMD,就会一个CD和DIR ,最多加个IPCONFIG ,PING 一下。要求不要太高了

#!/usr/bin/env.python  
# _*_ coding: utf-8 _*_

from PIL import Image
import  argparse

parse = argparse.ArgumentParser()

parse.add_argument(file)
parse.add_argument(-o,--output)
parse.add_argument(--width,type= int ,default= 80)
parse.add_argument(--height,type=int ,default= 80)

args = parse.parse_args()

IMG = args.file
WIDTH =args.width
HEIGHT = args.height
OUTPUT = args.output

ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`‘. ")
# 获得字符串的颜色
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)   # 将RGB颜色赋值给灰度值,固定公式。灰度值公式将像素的 RGB 值映射到灰度值
    unit = (256.0 + 1)/length
    return ascii_char[int(gray/unit)]

if __name__== __main__:

    im= Image.open(IMG)
    im= im.resize((WIDTH,HEIGHT),Image.NEAREST)
    txt = ""
    for i in range(HEIGHT):             #按照高宽循环。打印一张图片,前后无所谓。
        for j in range(WIDTH):
            txt += get_char(*im.getpixel((j,i)))    #im.getpixel(())  返回给定位置的像素值,这一点的RGB,三位数。然后用灰度值显示。
        txt += \n
    print(txt)
    if OUTPUT:
        with open(OUTPUT,w) as f:    
            f.write(txt)
    else:
        with open(r"C:\Users\HBX\Documents\staudy\output.txt",w) as f:    #输出文件到本地文件夹。
            f.write(txt)

 

图片转字符串

标签:一点   pen   ascii   不能   python   open   rgb   --   document   

原文地址:https://www.cnblogs.com/sakura3/p/8476411.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!