创意终端影集左侧效果图:

左侧效果图:

实现思路:

通过python的PIL库,将彩色转黑白(256种灰度),创建字符集,建立字符集与灰度的映射

动图

把照片裁成1:1的比例,保证显示比例正常,通过定时刷新,模拟一个动感影集

源码

from PIL import Image
import os
import time

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

def transform_image(image_file):
    #转换为黑白图片,参数"L"表示黑白模式
    image_file = image_file.convert("L")
    codePic = ''
    #size属性表示图片的分辨率,'0'为横向大小,'1'为纵向
    for h in range(0,image_file.size[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 main():

    # 获取终端的高度
    height = os.get_terminal_size().lines

    # 获取同级目录文件夹下所有图片的列表
    the_names = os.listdir("./images")

    # 开启循环
    while 1 :
        # 遍历每张图片
        for the_name in the_names:
            try:

                # 清屏幕
                print("\n"*height)
                # 拼合当前图片名
                my_img = open("./images/"+the_name,'rb')
                # 打开当前图片
                image_file = Image.open(my_img)
                #调整图片尺寸到原来的四分之一
                # image_file=image_file.resize((int(image_file.size[0]*0.5), int(image_file.size[1]*0.5)))
                image_file=image_file.resize((250, 250))

                #打印图片
                print(transform_image(image_file))
                # 每张图片停顿5秒
                time.sleep(5)
            except Exception as e:
                pass

if __name__ == "__main__":
    main()

文章涉及到的资源我会通过百度网盘分享,为便于管理,资源整合到一张独立的帖子,链接如下: http://www.jianshu.com/p/4f28e1ae08b1

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏和蔼的张星的图像处理专栏

总结?

其实算不得总结,lintcode这个在专题不会再更新了,准备秋招的时候大概看过一遍这个,有些还是很有用的,然后剑指offer差不多刷了一遍,过些天闲了我把剑指o...

11140
来自专栏Small Code

【Python】Numpy 中的 shuffle VS permutation

有时候我们会有随机打乱一个数组的需求,例如训练时随机打乱样本,我们可以使用 numpy.random.shuffle() 或者 numpy.random.per...

474110
来自专栏梦里茶室

TensorFlow 深度学习笔记 逻辑回归 实践篇

Practical Aspects of Learning Install Ipython NoteBook 可以参考这个教程 可以直接安装anaconda,里...

22670
来自专栏CNN

从Tensorflow模型文件中解析并显示网络结构图(CKPT模型篇)

本文介绍如何从CKPT模型文件中提取网络结构图并实现可视化。

1.8K30
来自专栏菩提树下的杨过

mxnet安装及NDArray初体验

一、mxnet安装 (以下均为mac环境) 有二种方式: 1.1 用conda安装 1 #创建gluon目录 2 mkdir gluon-tutorial...

30660
来自专栏人工智能LeadAI

逻辑回归 | TensorFlow深度学习笔记

课程目标:学习简单的数据展示,训练一个Logistics Classifier,熟悉以后要使用的数据 Install Ipython NoteBook 可以参考...

33470
来自专栏数据结构与算法

单调队列优化多重背包

\(f[i][j] = max(f[i - 1][j - k * w[i]] + k * v[i])\)

30210
来自专栏杨熹的专栏

TensorFlow-6-TensorBoard 可视化学习

学习资料: https://www.tensorflow.org/get_started/summaries_and_tensorboard 中文翻译: h...

34350
来自专栏数据结构与算法

洛谷P3707 [SDOI2017]相关分析(线段树)

题目描述 Frank对天文学非常感兴趣,他经常用望远镜看星星,同时记录下它们的信息,比如亮度、颜色等等,进而估算出星星的距离,半径等等。 Frank不仅喜欢观测...

37850
来自专栏人工智能LeadAI

存储Tensorflow训练网络的参数

训练一个神经网络的目的是啥?不就是有朝一日让它有用武之地吗?可是,在别处使用训练好的网络,得先把网络的参数(就是那些variables)保存下来,怎么保存呢?其...

33380

扫码关注云+社区

领取腾讯云代金券