@sevenup233
2019-03-03T13:09:19.000000Z
字数 1074
阅读 625
PY
图像处理库:PIL(Python Imaging Library)
官方教程:http://www.effbot.org/imagingbook/
对整体:打开,保存,调色,变形(简单功能的PS)
对单点:获取每个像素信息,逐一修改
流程:
【黑白可输出txt】打开图像--》获取图片每个像素的灰度--》根据灰度输出字符到txt文件
【彩色只能输出图片】打开图像--》获取图片每个像素的灰度&颜色--》根据灰度输出字符到txt文件--》根据颜色吧字符绘制成图片文件
【彩色也可能输出txt】但是py的word插件没有找到设定输出文本颜色的功能
#定义输出的字符ascii_char = list("@&*.o ")#读取图片的信息(名称、宽高)IM=Image.open(xxx)WIDTG=im.size[0]HEIGHT=im.size[1]#灰度与字符对应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)]#暂存文本txt = ""#暂存颜色colors = []#遍历每个像素,记录像素颜色信息和对应灰度的字符for i in range(HEIGHT):for j in range(WIDTH):pixel = im.getpixel((j,i))txt += get_char(*pixel#记录像素颜色信息colors.append((pixel[0],pixel[1],pixel[2]))txt += '\n'colors.append((0,0,0))#只要字符可以用文本模块输出txt到txt#需要上色用ImageDraw为每个字符进行上色#字符大小font_h=12font_w=12#上色,输出图片dr = ImageDraw.Draw(newim)newim = Image.new("RGB",(940,400),(0,0,0))for i in range(len(txt)):if(txt[i]=='\n'):x+=font_hy=-font_wdr.text([y,x],txt[i],colors[i])y+=font_wnewim.save("output.png", encoding='utf-8')