Как использовать полублок UTF-8, чтобы иметь два цвета в одном символьном блоке? - PullRequest
0 голосов
/ 22 января 2020

Я видел половину блока, используемого в некоторых терминальных приложениях для размещения двух цветов в одном блоке символов, и я хочу воссоздать его в Python, но я не могу понять, как это сделать в Python потому что я не могу найти учебник / инструкции в Интернете о том, как на самом деле это сделать. Все, что я знаю в настоящее время, это то, что он использует эти символы:, но я не знаю, как он становится единым целым и обращается к этому █ на терминале

From https://github.com/sharkdp/pastel/ From https://www.brow.sh/

С https://github.com/sharkdp/pastel/ и https://www.brow.sh/

1 Ответ

0 голосов
/ 23 января 2020

Благодаря usr2564301

Один цвет - это цвет переднего плана - цвет текста, а другой - цвет фона. - usr2564301

Это мой окончательный код (с использованием модулей Pillow и ansicolors):

from PIL import Image
from colors import color

basewidth = 140
img = Image.open(str(input('Input File: ')))
wpercent = (basewidth/float(img.size[0]))
hsize = int((float(img.size[1])*float(wpercent)))
img = img.resize((basewidth,hsize), Image.ANTIALIAS)
img = img.convert('RGB')
width, height = img.size

for i in range(1, height, 2):
        line = ''
        for j in range(1, basewidth):
                ra, ga, ba = img.getpixel((j, i))
                rb, gb, bb = img.getpixel((j, i+1))
                line += color('\u2584', fg=(rb, gb, bb), bg=(ra, ga, ba))
        print(line)

И вот результат:

Result

Я мог бы изменить базовую ширину, чтобы вместо этого проверить ширину терминала вместо фиксированного значения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...