一个用于在终端中以块字符字符串显示位图的Python模块。
项目描述
tbmp - 一个基于终端的位图数据结构。
作者:Al Sweigart al@inventwithpython.com
一个用于在终端中以块字符字符串显示位图的Python模块。文本字符的高度是其宽度的两倍,因此每个文本字符可以表示两个像素。此模块使用块字符9600、9604、9608和空格字符来表示像素。
由于它们仍然是文本字符,因此“像素”可以像任何其他文本一样复制/粘贴。这也使得它们易于在终端窗口或IDE或Web应用程序中显示。这种简单性使得此模块非常适合在终端窗口中显示图形。
此模块旨在用于教授编程概念,例如嵌套循环、简单的2D图形、康威生命游戏等。
applyFunc()方法特别适用于生成算法艺术。
示例文件夹包含使用终端位图的示例程序。包括康威生命游戏、从大十六进制数字渲染的蒙娜丽莎,以及旋转立方动画。
本模块没有依赖,适合放在一个单独的.py文件中,因此可以通过pip安装或直接复制到tbmp.py文件中导入。将singleFileVersion/tbmp.py文件复制到Python脚本所在的文件夹中,即可导入tbmp而无需通过pip安装。
安装
使用pip安装,请运行
pip install tbmp
快速入门指南
>>> from tbmp import *
>>> b = TBMP(10, 10) # Create a 10x10 bitmap.
>>> b.width, b.height, b.size
(10, 10, (10, 10))
>>> for i in range(10):
... b[i, i] = True
... b[b.width - 1 - i, i] = True
...
>>> print(b)
▀▄ ▄▀
▀▄ ▄▀
██
▄▀ ▀▄
▄▀ ▀▄
>>> print(b.framed)
┌──────────┐
│▀▄ ▄▀│
│ ▀▄ ▄▀ │
│ ██ │
│ ▄▀ ▀▄ │
│▄▀ ▀▄│
└──────────┘
>>> b.invert()
>>> print(b)
▄▀██████▀▄
██▄▀██▀▄██
████ ████
██▀▄██▄▀██
▀▄██████▄▀
>>> b.shift(4, 1)
>>> print(b)
▄▄▄▄▄
█▄▀███
███▄▀▀
███▀▄▄
█▀▄███
>>> b.randomize() # Set pixels randomly
>>> print(b)
▄█▀█▄ ▄█▀▀
▀▄█ ▄ ▄▀
▄ █▀█▀▄ ▀▄
▀▄█▀▀ █▀▄
█▀▀██▄▄ ▀
>>> b.randomize(0.90) # Set 90% of pixels on, at random.
>>> print(b)
█▄█████▄██
▀██▀██████
██▄███████
▄███████▄█
█▄██▄█████
>>> b.randomize(0.25) # Set 25% of pixels on, at random.
>>> print(b)
▄ ▄▄ █ ▄
▀▄▄▄ ▀
▀▄▄
▄ ▀▄ ▀
▄ ▀ ▀
>>> b.image().save('myBitmap.png')
>>> b.image().show() # Have Pillow show a preview of the image.
applyFunc()
函数对于创建算法艺术很有用。您给它一个lambda函数(或lambda函数的字符串),该函数接受x和y整数参数,如果表达式为零,则那些坐标的像素是黑色,如果不为零,则像素是白色。
>>> b2 = TBMP() # Create a bitmap slightly smaller than the terminal window.
>>> b2.applyFunc('(x ^ y) % 5')
>>> print(b2)
▄▀██▀▄████▄▀██▀▄████▄▀██▀▄████▄▀██▀▄████▄▀██▀▄████▄▀██▀▄████▄▀██▀▄████▄▀██▀▄███
██▄▀██▀▄▄▀██▀▄████████▄▀██▀▄▄▀██▀▄████████▄▀██▀▄▄▀██▀▄████████▄▀██▀▄▄▀██▀▄█████
▀▄██▄▀████▀▄██▄▀▄▀████████▄▀▀▄████████▀▄▀▄██▄▀████▀▄██▄▀▄▀████████▄▀▀▄████████▀
██▀▄██▄▀▀▄██▄▀████▄▀████▄▀████▀▄████▀▄████▀▄██▄▀▀▄██▄▀████▄▀████▄▀████▀▄████▀▄█
██▄▀██▀▄▄▀██▀▄██▀▄████▄▀████▄▀██▄▀██▀▄████▀▄████████▄▀████▄▀██▀▄██▀▄████▀▄████▄
▄▀██▀▄████▄▀██▀▄██▀▄▄▀████████▄▀██▄▀██▀▄▀▄████████████▄▀▄▀██▀▄██▀▄████████▀▄▄▀█
██▀▄██▄▀▀▄██▄▀████▄▀▀▄██▄▀██████▀▄██▄▀████████▀▄▄▀████████▀▄██▄▀██████▀▄██▄▀▀▄█
▀▄██▄▀████▀▄██▄▀▄▀████▀▄██▄▀██████▀▄██▄▀████▀▄████▄▀████▀▄██▄▀██████▀▄██▄▀████▀
████▄▀██▀▄████▄▀▄▀██▀▄████▄▀██▀▄██▄▀██▀▄████▄▀████▀▄████▄▀██▀▄██▄▀██▀▄████▄▀██▀
██████▄▀██▀▄▄▀████▄▀██▀▄▄▀██▀▄██▄▀██▀▄████████▄▀▀▄████████▄▀██▀▄██▄▀██▀▄▄▀██▀▄█
▄▀████████▄▀▀▄██▀▄██▄▀████▀▄██▄▀██▀▄██▄▀▄▀████████████▀▄▀▄██▄▀██▀▄██▄▀████▀▄██▄
██▄▀████▄▀████▀▄██▀▄██▄▀▀▄██▄▀██▀▄██▄▀████▄▀████████▀▄████▀▄██▄▀██▀▄██▄▀▀▄██▄▀█
▀▄████▄▀████▄▀████▄▀██▀▄▄▀██▀▄██████▄▀████▄▀██▀▄▄▀██▀▄████▀▄██████▄▀██▀▄▄▀██▀▄█
██▀▄▄▀████████▄▀▄▀██▀▄████▄▀██▀▄██████▄▀▄▀██▀▄████▄▀██▀▄▀▄██████▄▀██▀▄████▄▀██▀
██▄▀▀▄██▄▀████████▀▄██▄▀▀▄██▄▀██▄▀████████▀▄██▄▀▀▄██▄▀████████▀▄██▀▄██▄▀▀▄██▄▀█
▄▀████▀▄██▄▀████▀▄██▄▀████▀▄██▄▀██▄▀████▀▄██▄▀████▀▄██▄▀████▀▄██▀▄██▄▀████▀▄██▄
██▀▄████▄▀██▀▄████▄▀██▀▄████▄▀██▄▀██▀▄████▄▀██▀▄████▄▀██▀▄████▄▀████▄▀██▀▄████▄
▀▄████████▄▀██▀▄▄▀██▀▄████████▄▀██▄▀██▀▄▄▀██▀▄████████▄▀██▀▄▄▀████████▄▀██▀▄▄▀█
██████▀▄▀▄██▄▀████▀▄██▄▀▄▀██████▀▄██▄▀████▀▄██▄▀▄▀████████▄▀▀▄██▄▀████████▄▀▀▄█
████▀▄████▀▄██▄▀▀▄██▄▀████▄▀██████▀▄██▄▀▀▄██▄▀████▄▀████▄▀████▀▄██▄▀████▄▀████▀
▄▀██▀▄████▀▄████████▄▀████▄▀██▀▄██▄▀██▀▄▄▀██▀▄██▀▄████▄▀████▄▀██▀▄████▄▀████▄▀█
██▄▀██▀▄▀▄████████████▄▀▄▀██▀▄██▄▀██▀▄████▄▀██▀▄██▀▄▄▀████████▄▀██▀▄▄▀████████▄
tbpm
模块还包含一个返回预制作TBMP对象的cube()
和monaLisa()
函数。
>>> print(cube())
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▄▀█ ▄▀█
▄▀▀ █ ▄▀▀ ▀▄
▄█▄▄▄▄▄▄█▄▄▄▄▄▄▀ █
█ █ █ █
█ █ ▀▄ █
█ ▀▄ █ ▀▄
█ █ █ █
█ ▄▀▀▀▀▀▀█▀▀▀▀▀▀█▀
▀▄ ▄▄▀ ▀▄ ▄▄▀
█▄▀ █▄▀
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
>>> print(monaLisa())
▀▄▀ █ ▀▀▄▀ ▀▄▀▀▄▀ ▀▄▀ ▀▄▀▄▀▀▄ ▄▀▄▀ ▄ █ █ ▀▄▀ ▀▄▀ ▀ ▄▀▄▀ ▀ █ ▀▄▀ █ █
▄ █ ▄▀▄ ▀▄▀▄ ▀ ▀▀ ▀▀▄▄ ▄ ▄ ▀▄ ▀▀▄ ▀▄ █ ▄▀▄ ▀ █ ▀▄ █ █ ▄▀▄ █ █▄
▄▄▀ ▄▄▀▄▀ ▄▄▀▀▀▄▀▄▀ █ ▄ ▀▄▄▀ █ ▀▄▀▄ █ ▄ ▄▀ █ ▀▀▄ ▀▄▀▀ ▄ █ ▄▀ ▄▄▀▄▄▄▀
▄▄▀▄▄ ▄ █ █ █▄ █ █ ▄▀▄█ ▄ █ █ █▄ █ █▄▀▄ █ ▄▀▀▄▀█ ▄▀▀▄▀▄ █ █▄ █ ▄ █
▀▄▀▄█ █ █▀ █ ▄▀▄▀▄▀▄▀ ▄▀▄▀▄▀ ▀ ▀▄▀▄▀▄▀▄▄ ▀▄▄▀▄▄▀▄▀▄▀▄▀▄▄▀▄▀█
█ █▄ █▄ █ ▀█ █ █ █ █▄▀█ █ ▀▀ ▀▄ ▀▄▀▄▀▀▄ █▄▄ █ █ █ █ █ █ █▄
▄▀ █▀ █▄▀█▀▄▀▄▀▄█▀▄▄▀▄▀█▄▀ ▄▄█▀▄▄ ▀ ▀▄▄█▀▄▀▄▄▀█ █▄▀▄█ █▄▀▀▀▄▄
▀█ ▀█ █ █ ██▄▀█ █▀▄▀██ █ █▄███▄██ ▀▄ ▄█▄▀▄▄█ █▀▄▀█▄ █ █▀█▄█
▀▄█▀█▀▄█▀█▄▄▀█▄▀█▄▀█ █▀ ▀▄█▄▀██▄▀█▄ ▄ ▄▀▀▄ █▄▀▀▄█▀▀█▀▄█▄▀▄█▀
▄▄ ▀█▄ ▄▀▄▀█ ██ ██ ██ ▀ █▄███▄███▄█ █ ▀ ▀▄▄ ▀▀█ ██ ██ █▄▀▄▀▀
▀ ▄ ▀▄▀ ▀▄ ▀▀▄▀█▀█▀ ▀ ▀▄▀ ▄ ▀ ▀ ▀▄ ▄▀ ▄▀▄██ ██▄▄▀▄▀▄
▀▄ ▀▄ ▀▄ ▀ █▄▀▀▄▀ █ █ ██ ▄█▄ █▄▀ ▄ ▄ ▄ ▄ █▄▀█▄ █ █ █
▄ ▄ ▀ ▀ ▀ ▀ ▀ ▄ ▄ ▄ ██▀█▄▄▀▄█▄█▄█ ▀ ▄ ▄ ▄ █▀▄▀█ █ ▀▄▀
▄ ▀ ▀ ▀▄ ▄ ██ ██ ▄▀█▄▄ ▀ ▀▀▀ █ ▀ ▀▄ ▀ ▀
▄ ▀ ▀▄ ▀ ▀ ▄ ▀ ▀▄█▄ ▀▀█ ▄ ▄ ▄ ▄ ▄ ▀ ▀ ▀ ▀ ▀
▄ ▄ ▄ ▄ ▀ ▀ ▀▄▄▀█ █ ▀▄ ▀ ▀ ▄ ▀ ▀▄ ▀ ▀▄
▄ ▀ ▄ ▀ ▄ ▄ ▀█▄▀▄▀▀ ▀ ▀ ▄ ▀ ▄ ▄
▄ ▀ ▀ ▄ ▄ ▄ ▄ ▀ ▀ ▄ ▀ ▀ ▀ ▄ ▄ ▄
▀ ▀ ▀ ▀▄ ▀▄ ▀▄ ▀ ▄ ▀ ▄ ▄ ▄ ▄ ▄ ▄
▄ ▀▄ ▄ ▀ ▀▄ ▀ ▀▄ ▄ █ █ █ █ ▀▄ ▀ ▀ ▀ ▄▀▄ ▀▄ ▀
▀ ▄ ▀ ▄ ▄ ▀ ▄▄█▄█▀▄▄█ █▄ ▄ ▀ ▄ █ ▀ ▄ ▀
▄ ▀▄ ▄ ▀ ▀ ▄ ██▄█▄█▀█▄▀██▄▀ ▀ ▀ ▀█▄▀▄▄ ▀▄ ▀▄
▀ ▄ ▄▀▄ ▀ ▄ ▄▀█▄█▄█▀██▀██▄█▀▄ ▄ ▀ ▀▄ ▀ ▄▀▄
▀ ▀ ▀▄▀ ▀ ▄ ▀ ▄▄▄▀██▀██▀███▄▀█▄▀ ▀ █ ▀ ▄ ▀▀▀▄ ██▄
▀ ▄ ▀ ▀ ▀▄▄ ▄▄▀█▀█▀██▀███▀███▄▀▄ ▄▀▀▀▀ ▀ ▀ ▄ ▄▄▀
▄ ▀▄ ▀ █▄▄ ▀▀██▀████▄███▄██ █ ▀ ▀▄
▄ ▀ ▀ ▀ ▄ ▄ ▀ ▄ ▀▄▀▀▀█▀█▀█ ▀ ▄ ▄ ▄ ▀ ▀ ▀ ▄
▀ █ ▀▄ █ ▀ ▀▄ ▄ ▀ ▄ ▄ ▄ ▀ ▄ ▀
▀ ▀ ▀ ▄ ▄ ▀ ▄ ▄ ▄ ▄ ▄ ▄
▀ ▀▄ ▀▄▄ ▄ ▀ ▄ ▀▄ ▀ ▄
▀▄▀▄▀▄ ▀▀ ▀ ▀ ▀ ▀ ▀ ▀
▀ ▄ ▀ ▄ ▀ ▄ ▄ ▄ ▀ ▀ ▀
▄ ▀ ▄ ▄ ▄ ▀ ▀ ▄
▄ ▀ ▄ ▄ ▀ ▄ ▄
▄ ▀ ▄ ▀ ▀
▀ ▀ ▄ ▄ ▄ ▀ ▀ ▀ ▀ ▀
▄ ▀ ▄ ▀ ▄ ▄ ▄ ▄
▀ ▄ ▀▄ ▀ ▀ ▄▄▄▀██▀█▄▀▄ ▄ ▀ ▀ ▄
▀ ▄▀█ █▀▄█▄█▀▄▀▄ ▀
▀ ▀▄ ▀ █ ▀█ █▀██▄ ▄ ▄ ▄
▄ ▄ ▄ ▀▄▀▄▀▀▄▀▄▄ ▀ ▀▄▀ ▀ ▀ ▀ ▀ ▀ ▀
▄ ▄ ▄ ▀█ ▀ █▄ ▀█▄ ▀ ▀▄ ▄ ▄
▀ ▀ ▄ ▄▀ █▀▀ ▀ ▀▄▄ ▀▄ ▄ ▄ ▀ ▀
▀ ▀▄ ▀▀▀ ▀ ▀ ▀▄ ▀
▀ ▄▀ ▄ ▄ ▄
▄ ▀
▄
▀
▀ ▀ ▀ ▀
▀
贡献
如果您想为tbmp做出贡献,请查看https://github.com/asweigart/tbmp
项目详情
关闭
tbmp-0.1.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 165923d07166949ef322f97ecb4f612f7e170cf8977dc33ba30a27d37033606b |
|
MD5 | 00f632ab06675bc7b0af91fe219effe9 |
|
BLAKE2b-256 | cc4309327181ef01a9fe73324fe76fa28074dc7345332df05764b9549a3ee8fd |