zoukankan      html  css  js  c++  java
  • 自定义shell命令--闪烁的字母(PIL实现)

    之前看到shell命令行,有人写过漫天下字母的cmatrix,想自己动手用python写一个类似,但是比较有自己风格的shell屏保

    大致效果如下:

     

    制作这个的大体思路比较简单:

    1.利用python的PIL的库,进行图像转换屏幕字母的绘制  

    2.运行此程序,作为一个命令使用

    先说第一步:

    以下是所需要的库:PIL用于绘图,argparse用于给python程序提供入口参数,time用于每个图片的切换间隔

    1 from PIL import Image
    2 import argparse
    3 import time

    下面添加所需要的入口参数:这里width,height就是屏幕的宽高

     1 parser = argparse.ArgumentParser()
     2 
     3 parser.add_argument('file')  #input file
     4 parser.add_argument('--width', type = int ,default = 150) #output_string width
     5 parser.add_argument('--height' , type = int , default = 48) #output_string height
     6 
     7 #get args
     8 args = parser.parse_args()
     9 
    10 IMG = args.file
    11 WIDTH = args.width
    12 HEIGHT = args.height

    随便定义一个accii:

    ascii_char = list("~!@#$%^&**()-=[];'\,./_+{}|qwertyuiopasdfghjklzxcvbnmQAZWSXEDCRFVYHIKJMPLH;'./,")

    写RGB转字符的函数:

    1 def get_char(r , g , b , alpha=256):
    2     #RGB值轉換爲字符值
    3     if alpha == 0:
    4         return ' '
    5     length = len(ascii_char)
    6     gray = int (0.2126 *r + 0.7152* g + 0.0722 * b)   #灰度值計算公式
    7     unit = (256.0 + 1) /length
    8     return ascii_char[int(gray/unit)]

    写主函数:

     1 if __name__ == '__main__':
     2 
     3     im = Image.open(IMG)
     4     im = im.resize((WIDTH,HEIGHT) , Image.NEAREST)
     5 
     6     txt = ""
     7 
     8     for i in range(HEIGHT):
     9         for j in range(WIDTH):
    10             txt += get_char(*im.getpixel((j,i)))
    11         txt += '
    '
    12     
    13     print(txt)
    14     time.sleep(0.8)

    至此,一个分辨率不高的图片就可以转换成字符形式的了,如下:

    然后开始第二部分:

    编写如下shell命令:

    1 #!/bin/bash
    2 while true
    3 do
    4     python3 ~/pythonFile/xfqz/toPIC.py ~/Pictures/w.jpg
    5     python3 ~/pythonFile/xfqz/toPIC.py ~/Pictures/h.jpg
    6     python3 ~/pythonFile/xfqz/toPIC.py ~/Pictures/y.jpg
    7     python3 ~/pythonFile/xfqz/toPIC.py ~/Pictures/z.jpg
    8 done

    其中,w.jpg,h.jpg,y.jpg,z.jpg,都是网上随便找到的,你也可以自己找,

    将这个文件另存为whyz.sh

    在.bashrc进行命令配置:

    alias whyz='bash ~/pythonFile/xfqz/whyz.sh'

     注意的事,whyz='命令'   这其中不要有空格,然后,保存退出,

    再次进入bashshell 就可以得到whyz的炫酷命令了~ 

    ps:

    在linux在制作gif动图也很简单:

    1.两个工具:一个是simplescreenrecorder用于屏幕录制(其他的屏幕录制软件也可以),一个是ffmpeg,用于将视频格式转换为gif动图格式

    使用如下命令

    ffmpeg -i input.ogg -s 640x320 -r 15 output.gif    

  • 相关阅读:
    Laravel学习之旅(一)
    telnet模拟邮件发送
    学习CodeIgniter框架之旅(二)继承自定义类
    学习CodeIgniter框架之旅(一)自定义模板目录
    MySQL主从复制实现
    coreseek增量索引
    锁(MySQL篇)—之MyISAM表锁

    php文件锁
    进程与线程
  • 原文地址:https://www.cnblogs.com/whyaza/p/9450693.html
Copyright © 2011-2022 走看看