python pillow Image 将图片转换为字符图片

用python将图片转换为字符图片,很多前辈都做过的东西,踩着前辈们的脚步,尝试用Python做些事,加强对python理解

将图片转换位字符串,需要引入pillowImage模块

使用open()函数读取图片文件

>>>im = Image.open(r"C:\Users\Administrator\1pthw\r11.png")
>>>print(im)
<PIL.PngImagePlugin.PngImageFile image mode=RGBA size=153x153 at 0x2E866D8>

mode = RGBA:mode表示图像的像素和深度,常用的有真彩"RGB"和灰度"L"

size = 153x153:size是一个二元tuple,表示图像的width和height

Image.show():显示图像

Image.resize((WIDTH,HEIGHT),Image.NEAREST):新图片像素大小

Image.rotate(45):顺时针旋转

cmyk = im.convert("CMYK")

gray = im.convert("L"):颜色转换

image.thumbnail(size,Image.ANTIALIAS):压缩图片

Image.getpixel():返回给定位置的像素值

一下是一个多数人做过的将图片转换为字符图的例子

from PIL import Image
# argparse库用来管理命令行参数输入
import argparse

# 创建一个命令解析器
parser = argparse.ArgumentParser()
# 输入文件
parser.add_argument('file')
# 输出文件
parser.add_argument('-o', '--output')
# 输出图片宽度
parser.add_argument('--width', type = int, default =80)
# 输出图片高度
parser.add_argument('--height', type = int, default = 80)

# 获取参数
args = parser.parse_args()

#提取文件
IMG = args.file
WIDTH = args.width
HEIGHT = args.height
OUTPUT = args.output

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

#图像处理,a,g,b为三原色,alpha为透明度
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(gary/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))
                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)

Argparse的作用就是为py文件封装好可以选择的参数

parser = argparse.ArgumentParser():创建一个命令行解析器

parser.add_argument():给Argparse上添加命令参数,指定可选的命令行选项

猜你喜欢

转载自blog.csdn.net/weixin_42112678/article/details/81221967