Python 图片转ASCII码

转载 2017年12月13日 00:57:02


#encoding=utf-8

from PIL import Image

IMG = "D:/test.jpg"
WIDTH = 180
HEIGHT = 100
OUTPUT = "D:/test.txt"

#<-----------------处理图片-------------->

ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")

#字符与RGB的对应的映射关系
def get_char(r,g,b,alpha=256):
    if alpha == 0 :
        return ' '
    lenght = len(ascii_char)
    gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
    unit = (256.0 + 1)/lenght
    return ascii_char[int(gray/unit)]

#如果是自己执行的话,就执行下面的,如果是作为导入模块就不执行
if __name__ == '__main__':
    im = Image.open(IMG)
    #这里是转换图片的大小,然后第二个参数表示图片的质量,一共有4种,低质量Image.NEARSET,双线性Image.BILINEAR,三次样条插值Image.BICUBIC,高质量Image.ANTIALIAS
    im = im.resize((WIDTH,HEIGHT),Image.NEAREST)
    txt = ""

    for h in range(HEIGHT):
        for w in range(WIDTH):
            #im.getpixel:根据坐标取得RGB对应的r,g,b三个值,这里的getpixel((i,j))的两个括号非常重要
            txt += get_char(*im.getpixel((w,h)))
        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)

这里写图片描述

**from PIL import Image
PIL 若无此库
解决: pip install pillow**


PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。

由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3.x,又加入了许多新特性,因此,我们可以直接安装使用Pillow。

安装Pillow
如果安装了Anaconda,Pillow就已经可用了。否则,需要在命令行下通过pip安装:

$ pip install pillow

Pillow - 廖雪峰的官方网站 http://t.cn/RK0roV6

用Python把图片转换为ASCII字符的程序

(说明: 这是我2007年写在cublog(China Unix)上的博客,现在把它转到这里来.)         很早就有人在QQ上发表字符串构成的图片,虽然看上去乱七八糟,但是总算还是图片,而且...
  • hackjames
  • hackjames
  • 2011年11月07日 14:30
  • 2088

python学习之PIL库学习---制作ASCII风格图片

今天闲来无事在网上发现了一种奇特的图片---ascii图片,如图 (其实这是我做的成品) 放大可以发现,其实这张图完全是由字符按照不同灰度构成的(如图) 这项技术在7-8年前很时髦,于是我准备研究...
  • david500834
  • david500834
  • 2015年01月12日 13:34
  • 654

Python入门:unicode、ASCII、UTF-8、汉字等之间的关系

ASCII引用:【百度百科ascii】:ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑...
  • foryouslgme
  • foryouslgme
  • 2016年07月12日 16:52
  • 3588

【Python】utf8,unicode,ascii编码的相互转换

utf8,unicode,ascii编码的相互转换
  • ran337287
  • ran337287
  • 2017年02月21日 20:28
  • 831

Python 字符编码学习-ascii编码,Unicode和UTF-8之间的关系

ascii编码,Unicode和UTF-8之间的关系1,ascii编码,这是一种单字节编码,8位,一个char的长度。最多可以存放255中不同的字符。对于早期的计算机系统来说,对于应付英文字符和一些符...
  • u012063703
  • u012063703
  • 2016年01月25日 11:48
  • 2473

[python相关]binascii:二进制和ASCII互转

20.1 binascii:二进制和ASCII互转 作用:二进制和ASCII互相转换。 Python版本:1.5及以后版本          binascii模块包含很多在二进制和ASCII编码...
  • zyflying
  • zyflying
  • 2013年01月26日 20:39
  • 1669

C语言之将无符号字符型转化为ascii码值

这个宏是在linux内核中获取的,主要的功能是能够将一个无符号字符型的参数转化为ASCII码值。 ASCII : ASCII 编码里包括了128个字符。用 十进制 0  到 127 来...
  • morixinguan
  • morixinguan
  • 2016年02月04日 14:00
  • 3793

ebcdic编码与ascII编码互转

ebcdic编码与ascII编码互转。
  • Real_Man_9528
  • Real_Man_9528
  • 2016年10月10日 14:25
  • 573

ASCII码表和常见键盘码

ASCII码表 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 0 NUT 32 (space) 64 ...
  • CHS007chs
  • CHS007chs
  • 2016年07月27日 15:05
  • 324

java字符与对应Ascii码互转

如题:代码如下: package main; /** * Java中将一个字符与对应Ascii码互转 * 1 byte = 8bit 可以表示 0-127 */ public class Ge...
  • z507263441
  • z507263441
  • 2015年08月25日 01:30
  • 30324
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python 图片转ASCII码
举报原因:
原因补充:

(最多只允许输入30个字)