python学习之PIL库学习---制作ASCII风格图片
2015-01-12 13:34
573 查看
今天闲来无事在网上发现了一种奇特的图片---ascii图片,如图
放大可以发现,其实这张图完全是由字符按照不同灰度构成的(如图)
这项技术在7-8年前很时髦,于是我准备研究一下
原理:我们可以发现虽然这个图片完全由文字生成,但基本的图案还是很清晰的,原理是人眼通过明暗的不同可以看出图片的大概轮廓
可以简单地把一个文字想象成一个白色的方块上占有一定面积的黑色图案,"@"在这个方块上黑色占的面积显然大于"."中黑色占的面积
就是通过不同字符中黑色所占的面积达小,我们可以模拟出图像的灰度,从而形成图像的轮廓
开写:
这次依旧使用python来写代码,我们需要用到的库只有PIL(python image labpython图像库)
ubuntu中可以直接简单安装
放大可以发现,其实这张图完全是由字符按照不同灰度构成的(如图)
这项技术在7-8年前很时髦,于是我准备研究一下
原理:我们可以发现虽然这个图片完全由文字生成,但基本的图案还是很清晰的,原理是人眼通过明暗的不同可以看出图片的大概轮廓
可以简单地把一个文字想象成一个白色的方块上占有一定面积的黑色图案,"@"在这个方块上黑色占的面积显然大于"."中黑色占的面积
就是通过不同字符中黑色所占的面积达小,我们可以模拟出图像的灰度,从而形成图像的轮廓
开写:
这次依旧使用python来写代码,我们需要用到的库只有PIL(python image labpython图像库)
ubuntu中可以直接简单安装
sudo apt-get install python-imaging
</pre><p></p><p>接下来是主体代码</p><p></p><p></p><pre name="code" class="python"># -*- coding: utf-8 -*- import Image from PIL import Image,ImageDraw,ImageFont color_str = '@MNH$OC?7>!:-;.'#这里是代表明暗的字符库 def pic_to_ascii(img): img_name = img.split('.') img = Image.open(img).convert('L')#这里一步是使用pil库把图片处理成黑白 pix = img.load()#获取图像上每一个像素 width,height = img.size pic =[] for h in xrange(height): img_wid = [] for w in xrange(width): img_wid.append(color_str[int(int(pix[w,h])*len(color_str)/255 )-1])#由于灰度图片只有255个色阶,所以这里一步是换算出每个像素点所代表字符库中的字符 pic.append(img_wid) <span style="white-space:pre"> </span> pic_new = Image.new('RGB',(len(pic[0])*10,len(pic)*10),(255,255,255))#这里pil库生成一个根据原图长宽×10来换算出的新图(10是每个字符的大小) draw = ImageDraw.Draw(pic_new) font = ImageFont.truetype('/home/lee/.local/share/fonts/arial.ttf',10)#这里选一个本地的字体文件 for y in range(len(pic)): for x in range(len(pic[0])): draw.text((x*10,y*10),pic[y][x],(255,0,0),font=font)#最关键一步,在每一个位置上写一个字符,形成一张新图 pic_new.save(img_name[0]+"_ascii.jpg",'JPEG') print "saved!" def main(): pic_name = raw_input("please input the name of the picture:") pic_to_ascii(pic_name) if __name__ == '__main__': main()
相关文章推荐
- caffe学习系列:制作自己的图片的leveldb(python,windows环境下)
- python学习:urllib库学习:制作简易爬虫下载图片
- python中使用PIL制作并验证图片验证码
- 通过学习制作长微博工具来了解水印的制作,及EditText中的内容在图片中换行显示
- 检查图片完整性 PIL Python
- PS制作涂鸦风格非主流图片教程
- Python的PIL库实现验证码图片
- 通过实例学习Silverlight教程之制作图片特效(二)
- python之利用PIL库实现页面的图片验证码及缩略图 推荐
- Python的PIL库实现验证码图片
- python学习--抓取一个网页上图片
- Python小游戏制作学习《兔子和獾》
- 4个Web2.0风格图片在线制作网站
- Python小游戏学习制作《兔子和獾》
- python学习心得1----python基本风格和内存管理
- win 7 下 PIL python Image模块 show函数不能正常显示图片
- 通过实例学习Silverlight教程之制作图片特效(一)
- python PIL 批量处理处理图片
- MFC学习之 ico图片制作 imagelist 并制作三态按钮
- 利用Python的PIL工具包实现图片比对