pycharm中将图片转化成字符画
2017-03-21 22:03
295 查看
PyCharmIDE: 给脚本传递参数
设置的地方:
Run/Debug Configurations->Configurations->Script Parames
和vs类似,都不用输入程序名字,直接输入参数即可。
如,在命令行中需要输入 python a.py b c d
则在上述地方直接输入 b c d就行了
我们知道其实一张图片是由很多不同像素点所组成的,每种像素点可以表示一种颜色。那么如果我们用不同的字符来代替各种像素点,是不是就可以将图片转化为字符画了?没错就是要用这个原理
该库的安装方式如下
1
我们今天所要使用的是该库中的Image模块.。其中会用到一个很重要的概念-灰度值(由图形颜色的深浅来决定)
关于Image模块的详细用法请戳http://www.cnblogs.com/apexchu/p/4231041.html
运行上述脚本
选材的图片原图如下
代码二:
效果:
设置的地方:
Run/Debug Configurations->Configurations->Script Parames
和vs类似,都不用输入程序名字,直接输入参数即可。
如,在命令行中需要输入 python a.py b c d
则在上述地方直接输入 b c d就行了
1.设计思路
如何把以.png的图片以不同字符把它形象的画出来呢?我们知道其实一张图片是由很多不同像素点所组成的,每种像素点可以表示一种颜色。那么如果我们用不同的字符来代替各种像素点,是不是就可以将图片转化为字符画了?没错就是要用这个原理
2.需做的准备
为了实现我们本片博文所述的功能,不许得有一个叫做Pillow(PIL)的图像处理库该库的安装方式如下
pip install pillow1
1
我们今天所要使用的是该库中的Image模块.。其中会用到一个很重要的概念-灰度值(由图形颜色的深浅来决定)
关于Image模块的详细用法请戳http://www.cnblogs.com/apexchu/p/4231041.html
3.代码实现
#! /usr/bin/python #coding:utf8 import argparse from PIL import Image def handle_command(): '命令行参数处理' parser = argparse.ArgumentParser() parser.add_argument('filename',help = '图片的路径') parser.add_argument('-o','--output',help = '是否输出文件') parser.add_argument('--width',type = int,default = 80) parser.add_argument('--heigth',type = int,default = 80) #获取命令行参数 return parser.parse_args() args = handle_command() class Ptrancefrom(object): '实现将图片转化为字符' def __init__(self,img,width,heigth): self.img = img self.width = width self.heigth = heigth self.ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ") def get_char(self,r,b,g,alpha = 256): '将256范围的灰度值映射到70个字符上' #灰度值为0时对应字符为空格 if alpha == 0: return ' ' length = len(self.ascii_char) #灰度值的计算公式 gray = int(0.2126 *r + 0.7152*g + 0.0722*b) unit = (256.0 + 1)/length return self.ascii_char[int(gray/unit)] def print_picture(self): '打印图形' #打开图片 im = Image.open(self.img) #设置图片像素的大小 im = im.resize((self.width,self.heigth),Image.NEAREST) txt = "" for i in range(self.heigth): for j in range(self.width): txt += self.get_char(*im.getpixel((j,i))) txt += '\n' print txt def write_to_file(self): '将生成的字符图片写入到文件' if args.output: with open(args.output,'w') as f: f.write(txt) else: with open('output.txt','w') as f: f.write(txt) pic = Ptrancefrom(args.filename,args.width,args.heigth) pic.print_picture()
运行上述脚本
python prog3.py --width 45 --heigth 45 ascii_dora.png
选材的图片原图如下
代码二:
from PIL import Image 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;:,\"^`'. ") 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)] if [/b]__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)
效果:
相关文章推荐
- 通过javascript把图片转化为字符画
- 基于canvas将图片转化成字符画
- 通过javascript把图片转化为字符画
- 通过javascript把图片转化为字符画
- 通过javascript把图片转化为字符画 推荐
- 基于 canvas 将图片转化成字符画
- C#中将图片文件转化为二进制数组-用于数据库存储
- python图片转化成字符画
- 通过javascript把图片转化为字符画
- 将图片转化为彩色字符画
- HTML5将图片转化成字符画
- python小项目--图片转化为字符画
- 通过javascript把图片转化为字符画
- 将普通图片转化为字符画(Python)
- 图片转化为字符画
- 基于 canvas 将图片转化成字符画
- 基于 canvas 将图片转化成字符画
- 基于canvas将图片转化成字符画
- 通过javascript把图片转化为字符画
- p 4000 y自学-把图片转化成字符画