点击上方 "程序员小乐"关注公众号, 星标或置顶一起成长

每天早上8点20分, 第一时间与你相约

每日英文

Whatever you are facing today, remember to give yourself some credit for making it this far. You are stronger than you know.

无论你今天要面对什么,既然走到了这一步,就奋 斗下去,给自己一些肯定,你比自己想象中要坚强。

每日掏心话

生活中没有什么可怕的东西,人活一世,感性的同时,总是少不了理性的克制。

来自:小象 | 责编:乐乐

程序员小乐(ID:study_tech)第 629 次推文   图片来自网络

   正文   

1.设计思路

如何把以.png的图片以不同字符把它形象的画出来呢?
我们知道其实一张图片是由很多不同像素点所组成的,每种像素点可以表示一种颜色。那么如果我们用不同的字符来代替各种像素点,是不是就可以将图片转化为字符画了?没错就是要用这个原理。

2.准备工作

为了实现我们本篇博文所述的功能,不需得有一个叫做Pillow(PIL)的图像处理库 
该库的安装方式如下
pip install pillow

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()

运行上述脚本
选材的图片原图如下 
效果图如下 

欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,学习能力的提升上有新的认识,欢迎转发分享给更多人。

欢迎各位读者加入程序员小乐技术群,在公众号后台回复“加群”或者“学习”即可。

猜你还想看

关于如何实现一个 TCC 分布式事务框架的一点思考

如何用一句话激怒怒怒怒怒怒怒怒互联网人?

如何让 Mybatis 自动生成代码

为什么 IDEA 比 Eclipse 更好?

如何用几个简单的命令改善你的Linux安全?

嘿,你在看吗

教你用Python将图片转化为字符画!附源代码相关推荐

  1. Python实现图片转化为字符图(附完整代码)

    工作原理: 先将图片每个像素的hsv(色相,饱和度,明度)值转化为可读取对象,使用到PIL的Image方法: from PIL import Imageimg = Image.open('test.p ...

  2. python将图片转为字符_Python将图片转化为字符画

    简介 最近发现一个有趣的操作, 将一张图片转化为字符串的模式来显示! 如图 准备 首先需要安装一个CV模块用来导入图片的#pip install opencv-python 然后明确下程序的设计思路1 ...

  3. 将普通图片转化为字符画(Python)

    1.设计思路 如何把以.png的图片以不同字符把它形象的画出来呢? 我们知道其实一张图片是由很多不同像素点所组成的,每种像素点可以表示一种颜色.那么如果我们用不同的字符来代替各种像素点,是不是就可以将 ...

  4. python将图片转化为字符图

    最近看到将图片转化为字符图的小实验,我觉得很有趣,所以决定自己实现一下. 步骤和原理如下: 读取图片的灰度值矩阵(0-255之间),灰度值矩阵主要反映的是图片的黑白程度,越黑越接近与0,越白越接近于2 ...

  5. 图片转化为字符画——get!小技巧【美人图,动物照,有趣注释图案】

    目录 一.想法来源 二.操作方法 1.魔性图注释代码样例 2.有趣的代码注释样例 3.巧用网站,上传图片呈现字符图 4.巧用代码注释工具 总结 前言 学习编程后,想用代码运行出图片上的形状.该怎么办? ...

  6. python动态图片转字符画_【小工具】使用python将图片转彩色字符画

    [Python] 纯文本查看 复制代码# -*- coding:utf-8 -*- from PIL import Image, ImageFont, ImageDraw from tkinter i ...

  7. 用Python把图片转成字符画

    刚学会上网的时候,看到上面的图觉的老神奇了.普通的英文字母居然可以画画.自己画是肯定看不出的.然而幼稚的我们被骗了 原图是这样的 通过下面的代码生成了字符画,什么原理呢? 我们知道显示器是由一个个像素 ...

  8. 通过javascript把图片转化为字符画

    1.获取上传图片对象数据 Javascript无法直接获取本地上传的图片的数据,html5可以解决这一问题 .html5里面的FileReader interface可以把图片对象的数据读到内存,然后 ...

  9. Python将图片转换为ASCII字符画

最新文章

  1. CVPR 2018 目标跟踪相关论文
  2. 人工神经网络之激活函数 -softmax函数
  3. 第八课-第二讲 08_02_bash脚本编程之七 case语句及脚本选项进阶
  4. Cannot find module 'less-bundle-promise'
  5. linux bond配置步骤,七种bond模式说明
  6. android空格对齐
  7. 用“无线诊断”工具解决 Mac 出现的 WiFi 连接问题
  8. [译] 一文教你预测 app 未来的变现情况
  9. 神策分析 2.1 版本正式发布!
  10. 字符串转Json,Json转字符串
  11. GB50174《电子信息系统机房设计规范》贯标培训活动
  12. Java学生管理系统功能结构图
  13. Ubuntu20.04安装增强功能
  14. 打开Excel文件需要两次才能打开文件解决办法
  15. laravel集合函数-pluck()
  16. 10年网安经验分享:一般人别瞎入网络安全行业
  17. matlab怎么加采样开关,开关量采集模块怎么使用?
  18. android app锁屏后定位,如何能让app在锁屏后还继续发送定位请求继续运行程序
  19. 叶黄素对眼睛有什么好处和作用?
  20. 【FFmpeg在Intel GPU上的硬件编解码实现】

热门文章

  1. layabox游戏开发经验分享1
  2. 新手小白学JAVA 泛型 Collection List Set
  3. 串口---串口通信数据位长度对传输数据的影响
  4. uView2.0 u-index-list 添加#点击不生效
  5. 专栏结语:基于spring cloud的工具栈
  6. Unity流水账2:视频播放之Video Player
  7. LeetCode--路径总和III
  8. qt5不支持的视频格式:doRender:Unresolved error code 80040266
  9. 爬取淘宝模特信息并自动保存图片
  10. 你知道Java中seriaVersionUID=1L是什么意思吗?