python实战小项目

1、学完python基础后,跟着网上做的一些小项目记录一下。

#coding:utf-8
from PIL import Image
import argparse
#处理文件的参数
#c创建一个参数处理器
parser = argparse.ArgumentParser()
#增加必选参数
parser.add_argument("file")
#增加可选参数,图片的宽度和高度,作为一会图片处理缩放的时候的宽度和高度值
parser.add_argument("--width",type=int,default=200)
parser.add_argument("--higth",type=int,default=200)
#增加可选参数output,规定输出内容到哪个文件
parser.add_argument("--output","-o")
parser = parser.parse_args()


File = parser.file
WIDTH = parser.width
HIGHT = parser.higth
OUTPUT = parser.output
#准备一个list,作为替换图片像素点的字符列表
list= list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/|()1{}[]?-+~<>i!lI;:,\"^`'. ")
#定义一个函数,将像素点的RGB转化为字符
def get_char(r,g,b,alpha=256):
    if alpha==0:
        return ''
    gray =  int(0.299*r + 0.587*g + 0.114*b)
    unit = 257.0/len(list)
    return list[int(gray/unit)]
if __name__ == "__main__":
    #打开图片
    img= Image.open(File)
    #对图片进行缩放
    img = img.resize((WIDTH,HIGHT),Image.NEAREST)
    pix = img.load()
    txt = ''
    #得到图片像素点的RGB
    for i in range(HIGHT):
        for j in range(WIDTH):
            txt += get_char(*img.getpixel((j,i)))
        txt += "\n"
    print(txt)
    if OUTPUT:
        with open(OUTPUT,"w") as f:
            f.write(txt)
    else:
        with open("output.txt","w") as f:
            f.write(txt)

你可能感兴趣的:(python)