初学Python,在网上看到Python图片转字符画的教程,我也来尝试下。

首先我们要用到Python的PIL库的Image模块,PIL(Python Imaging Library)库是Python的一个图像处理库。想了解PIL的详细功能介绍,可参考PIL的官方文档(虽然我也没看过,不过还是贴上来):http://effbot.org/imagingbook/

图片转字符画的关键思想是将图片的灰度值与你自己设定的字符集之间建立映射关系,不同区间的灰度值对应不同的字符,之后将图片每一个像素对应的字符打印出来就是我们要的字符画啦~

这里提供两种方法:

先将彩色图片转换为黑白图片,然后直接将每个像素点的灰度值与字符集建立映射。

获取图片的RGB值,利用公式:

Gray = R*0.299 + G*0.587 + B*0.114

计算可得每个像素点的灰度值,之后再建立映射即可。

# -*- coding: utf-8 -*-

from PIL import Image

codeLib = '''@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,"^`'. '''#生成字符画所需的字符集

count = len(codeLib)

def transform1(image_file):

image_file = image_file.convert("L")#转换为黑白图片,参数"L"表示黑白模式

codePic = ''

for h in range(0,image_file.size[1]): #size属性表示图片的分辨率,'0'为横向大小,'1'为纵向

for w in range(0,image_file.size[0]):

gray = image_file.getpixel((w,h)) #返回指定位置的像素,如果所打开的图像是多层次的图片,那这个方法就返回一个元组

codePic = codePic + codeLib[int(((count-1)*gray)/256)]#建立灰度与字符集的映射

codePic = codePic+'\r\n'

return codePic

def transform2(image_file):

codePic = ''

for h in range(0,image_file.size[1]):

for w in range(0,image_file.size[0]):

g,r,b = image_file.getpixel((w,h))

gray = int(r* 0.299+g* 0.587+b* 0.114)

codePic = codePic + codeLib[int(((count-1)*gray)/256)]

codePic = codePic+'\r\n'

return codePic

fp = open(u'暴走.jpg','rb')

image_file = Image.open(fp)

image_file=image_file.resize((int(image_file.size[0]*0.75), int(image_file.size[1]*0.5)))#调整图片大小

print u'Info:',image_file.size[0],' ',image_file.size[1],' ',count

tmp = open('tmp.txt','w')

tmp.write(transform1(image_file))

tmp.close()

原图

转换为字符画(注:在记事本打开时记得取消自动换行,下图字体:宋体 字号:小六)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python实现图片转字符画_Python实现图片转字符画的示例代码相关推荐

  1. python qq自动发消息软件_Python之qq自动发消息的示例代码

    准备:pip install win32gui 可能遇到的麻烦: No module named 'win32gui' 的解决方法(踩坑之旅) 源码: import win32gui import w ...

  2. python中统计数据的总和_Python 数据的累加与统计的示例代码

    问题 你需要处理一个很大的数据集并需要计算数据总和或其他统计量. 解决方案 对于任何涉及到统计.时间序列以及其他相关技术的数据分析问题,都可以考虑使用 Pandas库 . 为了让你先体验下,下面是一个 ...

  3. python中延时函数_python中实现延时回调普通函数示例代码

    python中实现延时回调普通函数示例代码 这篇文章主要给大家介绍了关于python中实现延时回调普通函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的 ...

  4. python图像转字符画_Python实现图片转字符画的示例

    字符画真的很有意思,将图片中的像素用字符代替,就生成了字符画. 但是像素是有颜色深浅的,我们如何将带有不同颜色的像素编码为对应的字符呢? 转化方法: 将彩色图片转化为灰度图 根据颜色深浅的RGB值(值 ...

  5. python将图片转为字符画_Python将图片转换为字符画的方法

    最近在学习python,看到网上用python将图片转换成字符画便来学习一下 题目意思是,程序读入一个图片,以txt格式输出图片对应的字符画,如图所示: 以下是python代码: # coding:u ...

  6. python动态图片转字符画_Python:图片转字符画

    字符画真的很有意思,将图片中的像素用字符代替,就生成了字符画. 但是像素是有颜色深浅的,我们如何将带有不同颜色的像素编码为对应的字符呢? 转化方法:将彩色图片转化为灰度图 根据颜色深浅的RGB值(值域 ...

  7. python实现图片转字符画_Python实现图片转字符画的示例

    字符画真的很有意思,将图片中的像素用字符代替,就生成了字符画. 但是像素是有颜色深浅的,我们如何将带有不同颜色的像素编码为对应的字符呢? 转化方法: 将彩色图片转化为灰度图 根据颜色深浅的RGB值(值 ...

  8. python将图像变成没有颜色_python将图片设置背景颜色修改为透明色

    由于原始的logo是白色背景的,而我们需要将白色背景更改为透明色,这里启用万能工具python进行图片转换了,使用到的就是pillow包的image. png格式是具有除了rgb三色外第四个参数表明像 ...

  9. python图片修复软件下载_python 实现图片修复(可用于去水印)

    在现实的生活中,我们可能会遇到一些美好的或是珍贵的图片被噪声干扰,比如旧照片的折痕,比如镜头上的灰尘或污渍,更或者是某些我们想为我所用但有讨厌水印,那么有没有一种办法可以消除这些噪声呢? 答案是肯定的 ...

最新文章

  1. simulink和psim仿真结果不同_案例展示金属增材制造过程仿真分析 (下篇)- 微观尺度...
  2. workflow4.0学习资料
  3. 离线轻量级大数据平台Spark之MLib机器学习库SVM实例
  4. 递归删除单链表中所有值为x的元素_如何纯递归反转链表的一部分
  5. TListBox的项目个数
  6. mahout安装测试
  7. 流量计算机标准,流量计算机
  8. js获取精确宽度/高度(带小数位像素)
  9. JAVA输出两个顺序链表的并集_(顺序表)两个集合求并集-洋葱先生-杨少通
  10. Linux kmalloc/kfree 源码解读
  11. 【TSP】基于matlab蚁群算法求解旅行商问题【含Matlab源码 1583期】
  12. 疾病自动编码任务的调研(二)——相关比赛及数据集
  13. 怎么用spss做冗余分析_SPSS进行典型相关分析结果总结
  14. Deepin 自定义修改窗口圆角大小
  15. pandoc 转换html,使用pandoc实现markdown和latex以及html的互转
  16. 竖版视频怎么批量转换成横版视频
  17. 栈(stack)——什么是栈?
  18. 识别电路板上贴片电阻型号0805 0402 0603 1206封装信息
  19. 开源盛世 Linux 资源导航 —★—
  20. 小学写景作文无处下手?心田花开8大写作技巧

热门文章

  1. 数据结构_树与二叉树(mindmap)+LeetCode_100.相同的树(C语言)
  2. Flex Basis与Width的区别
  3. React Native 设置RGBA背景色
  4. [转]C#多线程学习(三) 生产者和消费者
  5. Sony Sony开发在线音乐订阅服务
  6. linux部署安装nexus私服
  7. ubuntu镜像下载地址(国内镜像源)
  8. 在Centos下安装Typora
  9. Linux文件系统的类型及日志文件系统和非日志文件系统的区别
  10. yum安装docker(阿里镜像源)及docker-compose二进制安装