如何在终端中绘制单个像素?

如何在终端中绘制单个像素?

到目前为止,我使用字符在终端中绘制图像、形状等。

是否可以绘制单个像素?

比方说:

foo 1 1 red

这将在坐标处绘制一个红色像素(1, 1)

是否有现有的应用程序可以完成这项工作?

目前运行的是 Ubuntu 14.04。

答案1

看看德拉维尔图书馆。它使用 UTF 盲文字符来绘制像素。

像下面这样的东西会设置一个像素:

from drawille import Canvas

c = Canvas()

c.set(10, 10)

print(c.frame())

答案2

终端有字符单元显示并且不支持绘制像素图形。即使在 X11 中运行也不会;虽然直接与 X 服务器对话时当然可以绘制单个像素,但如果您的程序正在与终端对话,则它只能要求终端显示字符。

要显示图形而不是文本,您需要编写一个直接与 X 服务器交互的程序。这通常是通过 UI 工具包库完成的,例如GTK,Qt, 或者wxWidgets

答案3

您将无法在终端中绘制单个像素颜色,除非您可以执行以下操作威扎德的提到,自己编程,或者找到一个已经为该工作制作的工具(这可能是特定于终端的)。但是,可以在终端中使用单个字符坐标来使用 ASCII 和 UTF-8 字符绘制 2D 图像。用于此目的的工具称为tput.该工具的工作原理是根据当前终端的坐标操纵光标位置。以下是功能示例列表tput

# tput Cursor Movement Capabilities:

tput cup Y X
    # Move cursor to screen location X,Y (top left is 0,0)

tput sc
    # Save the cursor position

tput rc
    # Restore the cursor position

tput lines
    # Output the number of lines of the terminal

tput cols
    # Output the number of columns of the terminal

tput cub N
    # Move N characters left

tput cuf N
    # Move N characters right

tput cuu N
    # up N lines

tput cud N
    # down N lines

答案4

是的。没有现有的低级 API 支持来干预像素/同样在终端环境中。

然而,这个项目:wttr.in值得特别注意:尝试这些命令并亲自看看!

curl "wttr.in?format=v2"
curl wttr.in


底线

  • 在终端应用程序中运行的命令的输出返回字符流(具有定义的字符集)。
  • 它们characters -> pixels通过字体配置、ANSI 序列和其他应用程序特定设置显示在终端的矩形上。
  • 巧妙地探索包括 unicode 字符和表情符号序列在内的字符集;一个人有一些艺术的腿部空间可以扭动。
# Check the raw output as well.
curl "wttr.in?format=v2" > weather-raw.txt

相关内容